我对 Javascript / JQuery 的异步特性遇到了问题。
假设以下情况(为了不让它太麻烦,未计算延迟):
在页面上我有三个按钮(A、B、C),每个按钮都会通过一个 ajax 请求将一个商品添加到购物车中。 如果我在服务器端脚本(PHP)中故意延迟 5 秒,并以 1 秒的间隔按下按钮,则希望结果如下:
Request A, 5 seconds
Request B, 6 seconds
Request C, 7 seconds
然而,结果是这样的
Request A, 5 seconds
Request B, 10 seconds
Request C, 15 seconds
这是否意味着请求被排队而不是同时运行?这与异步相反,对吗?我还尝试向URL添加一个随机的get参数,以强制某些唯一性到请求中,但没有成功。我有点读过这方面的内容。如果避免使用相同的“请求对象(?)”,就不会出现这个问题。在JQuery中是否有可能强制实现这种行为?
这是我正在使用的代码。
$.ajax(
{
url : strAjaxUrl + '?random=' + Math.floor(Math.random()*9999999999),
data : 'ajax=add-to-cart&product=' + product,
type : 'GET',
success : function(responseData)
{
// update ui
},
error : function(responseData)
{
// show error
}
});
我也尝试了GET和POST,没有区别。
我希望在单击按钮时立即发送请求,而不是在上一个请求完成后再发送。我希望这些请求同时运行,而不是排队运行。
$.ajax
是异步的。 - Jason JongsetInterval
在 JS 中很容易实现。 - lonesomeday