Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX请求问题_Javascript_Html_Ajax - Fatal编程技术网

Javascript 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()

我在执行某种AJAX时遇到问题。以下是我希望发生的事情:

我有一个表单,按下按钮后,我想执行一小段Javascript(确认操作的执行),发送一个AJAX请求,然后提交表单。我不关心AJAX请求的输出,但它需要在提交表单之前运行

该按钮定义为:

<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
be
var url='/del_check.php?id='+id+'&del='+del?我仍然不明白为什么人们不使用jQuery(或类似的东西)来实现ajax功能。代码最小化和跨平台的兼容性使它值得一试。
xmlhttp.open('GET',url,true);