我有一个按关键字搜索的表单。该表单对另一个页面执行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的屏幕截图:
如何阻止新表单提交,直到第一个ajax请求完成并且用户实际点击了新的提交按钮?