Dos solicitudes $.post una tras otra. La segunda solicitud $.post no se ejecuta
Tengo una función de JavaScript dentro de la cual tengo dos solicitudes $.post. Ambas solicitudes $.post deberían ejecutarse. Pero a veces, la segunda solicitud $.post no se ejecuta. ¿Cuál podría ser el motivo?
Aceptado
$.post()
es una forma abreviada de la estructura $.ajax(). Normalmente prefiero usar la $.ajax()
estructura porque:
- Es más fácil ver si me he perdido algo.
- Puedo agregar más fácilmente parámetros adicionales, como
asynch: false,
- Cuando era nuevo en ajax, me resultó considerablemente más fácil solucionar problemas de esta estructura.
En su caso, es posible que su problema le resulte más fácil de resolver en una $.ajax()
estructura, ya que sería más fácil ver que debe ocurrir una segunda llamada ajax (que depende del resultado de una primera llamada ajax) en la función de éxito del primer ajax. llamar .
Aquí hay un ejemplo independiente (lástima que jsFiddle no pueda manejar ajax...):
PROBADOR.PHP
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#eml').focus();
$('#mybutt').click(function() {
var $a = $('#eml').val();
var $b = $('#pw').val();
//alert('Email: ' +$a+ ' Pass: ' +$b);
$.ajax({
type:"POST",
url: "yourphpfile.php",
data: 'email=' +$a+ '&pass=' +$b,
success: function(data) {
alert(data);
var aData = data.split('|');
var name = aData[0];
var code = aData[1];
alert('Name: ' +name+ ' Code: ' +code);
$.ajax({
type:"POST",
url: "yourphpfile.php",
data: 'name=' +name+ '&code=' +code,
success: function(newdata) {
alert(newdata);
} //END success_ajax2
}); //END ajax() #2
} //END success_ajax1
}); //END ajax() #1
}); //END mybutt.click()
}); //END $(document).ready()
</script>
</head>
<body>
Email: <br />
<input type="text" id="eml" /><br />
Password: <br />
<input type="password" id="pw" /><br />
<input type="button" id="mybutt" value="Submit">
</body>
</html>
tuarchivophp.php
<?php
if (isset($_POST['email'])) {
$e = $_POST['email'];
$p = $_POST['pass'];
$name = 'Bob';
$code = '1234';
$resp = $name .'|'. $code;
echo $resp;
}else if (isset($_POST['name'])) {
$n = '<h1>Here is something new</h1>';
echo $n;
}