我有一个按关键字搜索的表单。表单向另一个页面发出 ajax 请求并将结果打印到成功函数中。
例如,它正在搜索电影标题。因此,如果我在另一个页面上输入 'Nightmare on Elm Street' 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 步功能,类似于:“搜索 => 结果 => 获取电影信息”
结果是“未知”我不知道结果数组,我认为我不能使用 .when
这是萤火虫的屏幕截图:
在第一个 ajax 请求完成并且用户实际单击新提交按钮之前,如何阻止新表单提交?