这是一个有趣的问题.
我正在做异步ajax put
return $.ajax({
url: url,
type: 'PUT',
contentType: 'application/json; charset=utf-8',
async: true, // default
success: function (result, textStatus, xhr) {...}
这可以按预期工作,除非用户在前一次调用返回之前执行put(即使它是异步的,调用确实需要.5秒才能完成)
如果用户按下按钮几次(执行多次放置),则会发生以下情况:
我看到fiddler中只有一个服务器调用
每次点击都会成功
所有回调都获得相同的新行ID(由服务器返回)
这导致我不可避免的结论是第一个服务器回调触发了所有未完成的回调.
我可以在回调返回之前禁用该按钮,但是是否可以处理多个未完成的呼叫?这是浏览器的限制吗?处理这个的最佳方法?
UPDATE
作为测试我切换到使用POST而不是PUT:调整类型:JS端的'POST'和web api(服务器端)的[HttpPost].
行为没有改变.
UPDATE
看看像这样的帖子..这真的应该有效.我没有看到任何具体的原因,为什么其余的并发请求不会发送到服务器.