如何从javascript(ajax)中止laravel(php)执行?

如何从javascript(ajax)中止laravel(php)执行?,javascript,php,jquery,laravel,laravel-5.2,Javascript,Php,Jquery,Laravel,Laravel 5.2,我有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, met

我有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执行呢?

如果要中止当前的AJAX请求,必须将
xhr
变量声明为全局变量

但是,如果您想在双击时执行1个AJAX请求,为什么不尝试使用
dblclick
事件呢


不能从javascript内部终止php执行,它们是异步的。每个ajax请求都会启动一个服务器端php处理,通常会返回一个响应。但是javascript在发送请求后无法控制服务器端php。

2次单击=2次调用事件=2次执行ajax,因此2次递增=1+1+1=3,更改事件,而不是单击使用
dblclick
event。@Troyer我正在寻找从javascript终止php执行的机制,上面这只是一个简单的例子,没有解释我为什么需要这个…没有办法从JS停止PHP服务器端执行,您可以在ajax中添加更多参数来创建ajax函数控制器上的条件:)可能在JS中创建名为“counter”的全局变量,然后在第一次单击后递增它。然后检查
计数器==1?setTimeout(()=>{},3000):