2013-07-26 77 views
0

我有一个javascript函数,里面有两个$ .post请求。$ .post请求都应该执行。但有时,第二个$ .post请求不会被执行。可能是什么原因?

+0

我们需要看你的代码。请设置一个小提琴。 http://jsfiddle.com –

+0

请更具体。提供相关的代码片段。没有任何代码就无法进行调试。 –

+0

原因是你的代码有错误。回答...现在你应该放更多的代码。 –

回答

1

$.post()是$ .ajax()结构的缩写形式。我通常喜欢使用$.ajax()结构,因为:

  • 很容易地看到,如果我错过了什么
  • 我可以更容易地添加额外的参数,可以如
  • 当新阿贾克斯,我发现它相当容易解决这种结构

在你的情况,你可能会发现你的问题更容易在$.ajax()结构来解决,因为它会更容易地看到,第二Ajax调用(即取决于第一个ajax调用的结果)必须发生在第一个ajax调用的成功函数中。

这里是一个独立的例子(太糟糕的jsfiddle不能处理Ajax ...):

TESTER.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> 

yourphpfile.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; 
} 
+0

我在代码片段中给出的第一个嵌套第二个$ .post请求,现在代码工作正常。 –