这是一个有趣的问题。
我正在进行异步的ajax put操作。
return $.ajax({
url: url,
type: 'PUT',
contentType: 'application/json; charset=utf-8',
async: true, // default
success: function (result, textStatus, xhr) {...}
这个功能按预期运作,除非用户在上一个调用返回之前执行了一次put操作(即使它是异步的,该调用也需要0.5秒才能完成)
如果用户按下按钮几次(执行多个puts),则会发生以下情况:
- 我只看到fiddler中的一个服务器调用
- 每次单击都会触发成功(success)
- 所有回调都获得相同的新行ID(由服务器返回)
这让我不可避免地得出结论:第一个服务器回调会触发所有未完成的回调..
我可以禁用按钮,直到回调返回,但处理多个未完成的调用是否可能?这是浏览器的限制吗?最佳处理方法是什么?
更新
作为测试,我切换到使用POST而不是PUT:在JS端调整type:'POST'和在Web API端调整为[HttpPost]。
行为没有改变。
更新
查看像此类帖子.. 这确实应该起作用。我没有看到任何明确的原因,为什么其他并发请求不能传输到服务器。
cache:false
,有可能是由于缓存机制的原因,你在 Fiddler 中只看到了一个响应。 - Benjamin Gruenbaum