在AJAX Post:新表格在所有其他GET完成之前提交

时间:2013-07-23 05:27:45

标签: ajax jquery

我有一个按关键字搜索的表单。该表单对另一个页面执行ajax请求,并将结果打印到success函数中。

例如,它正在搜索电影片名。因此,如果我输入'榆树街梦魇'的AJAX POST到另一页,页面会收到GET并执行$('#status').html(response);

每个结果都是一个带有电影标题和“开始”输入按钮的表单,因此用户可以说'是的,这是我想要的电影'。

它开始填充响应就好了,然后突然结果开始在响应完成之前提交响应的随机形式。

以下是获取“电影标题”关键字并填充结果的代码。

<?php
   $myid = strtoupper($_REQUEST['thetitle']);

   $titles = $tmdb_V3->searchMovie($myid,'en');

   foreach($titles['results'] as $result) {

   ?>
   <form name="<?php echo htmlspecialchars($result['id']); ?>">
      <input type="hidden" name="mid" id="<?php echo htmlspecialchars($result['id']); ?>" value="<?php echo htmlspecialchars($result['id']); ?>" />
         Title: <?php echo htmlspecialchars($result['title']); ?>
      <input type="submit" name="submit" class="button" value="Go"></div>
   </form>
<?php
}
?>

<script type="text/javascript">
   $(document).ready(function(){
       $("form").submit(function() {
           var id = $(this).children('input[type="hidden"]').attr('value');
           $.ajax({
           async: false,
               type: "POST",
               url: "sx.php",
               data:"mid="+ id,
               cache: false,
             timeout: 30000,
               success: function(data){
   $('#status').html(data);
               }
           });
          return false;
      });
   });

</script>

就像我说的那样,结果开始填充#results div然后突然在提交结果之前提交'新'POST请求。

它的3步功能说:“搜索=&gt;结果=&gt;获取电影信息”

结果是'未知'我不知道结果数组,我不认为我可以使用.when

这是一个firebug的屏幕截图: http://i.imgur.com/IUbHRdw.jpg

如何阻止新表单提交,直到第一个ajax请求完成并且用户实际点击了新的提交按钮?

0 个答案:

没有答案