Javascript AJAX请求问题
我在执行某种AJAX时遇到问题。以下是我希望发生的事情: 我有一个表单,按下按钮后,我想执行一小段Javascript(确认操作的执行),发送一个AJAX请求,然后提交表单。我不关心AJAX请求的输出,但它需要在提交表单之前运行 该按钮定义为:Javascript AJAX请求问题,javascript,html,ajax,Javascript,Html,Ajax,我在执行某种AJAX时遇到问题。以下是我希望发生的事情: 我有一个表单,按下按钮后,我想执行一小段Javascript(确认操作的执行),发送一个AJAX请求,然后提交表单。我不关心AJAX请求的输出,但它需要在提交表单之前运行 该按钮定义为: <input title="Delete" onclick="return check_delete('id');" type="submit" name="Delete" value="Delete"> 除了xmlhttp.send()
<input title="Delete" onclick="return check_delete('id');"
type="submit" name="Delete" value="Delete">
除了xmlhttp.send()
部分之外,该函数运行正常-请求不会显示在web服务器的日志中,也不会执行。玩了一会儿之后,我发现如果我将函数的最后一行改为返回false
,而不是true
,我的AJAX开始工作,但是,由于返回值false
,表单不会被提交
我遗漏了什么?这一行:
xmlhttp.open('GET',url,true);
表示您正在发出异步请求(,)。请求是由您的代码发起的,但您的代码不会阻止等待它完成(这通常是一件好事)
但是,当您提交表单时,页面会被撕下并替换为表单提交的结果。任何未完成或排队的ajax请求都将被中止,甚至永远不会启动
通过将true
更改为false
,您可以使请求同步(阻塞),但在请求完成之前,您将锁定页面(最好)或浏览器(最坏),这并不理想
替代方法是避免完全执行ajax请求,或者取消表单提交,等待ajax响应(即使您不关心它),然后以编程方式提交表单(通过
HTMLFormElement\submit
——例如,在表单的DOM元素上调用submit
)。如果执行第二个操作,请注意,除非手动插入,否则您单击的按钮不会包含在表单数据中,因为该按钮不再提交表单。xmlhttp.send(null)或xmlhttp.send()-似乎没有什么区别。不应该var url='/del_check.php&id='+id+&del='+del
bevar url='/del_check.php?id='+id+'&del='+del代码>?我仍然不明白为什么人们不使用jQuery(或类似的东西)来实现ajax功能。代码最小化和跨平台的兼容性使它值得一试。
xmlhttp.open('GET',url,true);