我有js代码:
$('#button').on('click', function(e){
console.log('start');
if(xhr != ''){
console.log('terminate');
xhr.abort()
}else{
console.log('NOT terminate');
}
xhr = $.ajax({
url: url,
method: method,
success: function(json) {
console.log(json);
},
});
console.log('end');
return false;
});
和服务器laravel代码:
public function update(Request $request)
{
DB::transaction(function () {
sleep(10);
Product::find(1)->increment('user_id');
});
return 'test';
}
当我双击按钮输出时:
start
NOT terminate
end
start
terminate
end
test
user_id最初是1,但执行后它是3但我想成为2.那么如何从javascript终止(中止)laravel执行?
答案 0 :(得分:1)
你无法从javascript内部终止php执行,它们是异步的。每个ajax请求启动服务器端php处理,通常返回响应。但是一旦发出请求,javascript就无法控制服务器端的php。
答案 1 :(得分:0)
如果要中止当前的AJAX请求,则必须将xhr
变量声明为全局。
How to cancel/abort jQuery AJAX request?
但是,如果您想要双击执行1个AJAX请求,为什么不尝试使用dblclick
事件?