Javascript 连续调用jQuery.ajax会导致单个回调
这是一个有趣的问题 我正在做一个异步ajax putJavascript 连续调用jQuery.ajax会导致单个回调,javascript,jquery,ajax,Javascript,Jquery,Ajax,这是一个有趣的问题 我正在做一个异步ajax put return $.ajax({ url: url, type: 'PUT', contentType: 'application/json; charset=utf-8', async: true, // default success: function (result, textStatus, xhr) {...} 除非用户在上一个调用返回之前执行p
return $.ajax({
url: url,
type: 'PUT',
contentType: 'application/json; charset=utf-8',
async: true, // default
success: function (result, textStatus, xhr) {...}
除非用户在上一个调用返回之前执行put(即使是异步的,调用也需要0.5秒才能完成),否则这项工作与预期的一样正常
如果用户按下按钮几次(执行多个PUT),则会发生以下情况:
- 我在fiddler中只看到一个服务器调用
- 每次点击成功都会被炒鱿鱼
- 所有回调都获得相同的新行ID(由服务器返回)
看看像..这样的帖子。。这真的应该管用。我看不出其他并发请求没有发送到服务器的具体原因 PUT请求不应该是幂等的吗?也就是说,提交多个请求应该生成相同的响应?如果是这样的话,代码可能只是试图合并相同的PUT请求,因为它们最终应该得到相同的结果。如果您要为每个post增加一些ID(即更改服务器状态),那么您应该使用post而不是PUT
这可能无法解决您的问题;这只是一个想法。您不能等待javascript中的异步回调。您必须重新构造代码,以便根据实际回调的异步响应完成所有后续工作
如果需要进行多个连续的ajax调用,则发出第一个调用,在第一个ajax调用的成功处理程序或响应处理程序中,发出第二个ajax调用,在第二个ajax调用的响应处理程序中,您可以对数据执行任何您想执行的操作Try
cache:false
可能存在缓存,这就是为什么使用fiddler只能看到一个响应。浏览器是否认为它发出了不同的请求?浏览器也只看到一个put。我尝试设置cache:false,但到目前为止,在上述行为中没有发现任何差异。您需要向我们展示整个函数,为什么要返回承诺,以及如何处理结果,因为这通常不是一个问题,既不存在PUT、DELETE,也不存在GET和POST。但我可以在fiddler中看到,只发出了一个请求。。除非我等到第一个电话结束。。然后我在fiddler中看到下一个请求。HTTP/1.1没有定义PUT方法如何影响源服务器的状态。PUT是幂等的这一点都不重要,事实上通常不是这样,我不知道为什么这一点被提升了。@BenjaminGruenbaum参见第9.1.2节在我的例子中,我使用PUT来创建一个新记录。服务器返回新行的id。“用put来表示这一点是不好的做法吗?”JesseBunch我回答的第一句话来自第9.6节。在OP的情况下,我们不知道请求是按顺序进行的,还是有可能是中间的其他请求。尽管如此,我还是对我所做的陈述进行了更正-现在我再次阅读它时,它的措辞不好。另外,让我再次重申,调用put多次在调用不重叠的情况下按预期工作。您好,这是我观察到的,我想了解一下限制或设计意图是什么,这样我就不能连续打多个电话了