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

时间:2017-03-01 08:32:56

标签: 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,
        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执行?

2 个答案:

答案 0 :(得分:1)

你无法从javascript内部终止php执行,它们是异步的。每个ajax请求启动服务器端php处理,通常返回响应。但是一旦发出请求,javascript就无法控制服务器端的php。

答案 1 :(得分:0)

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

How to cancel/abort jQuery AJAX request?

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

https://api.jquery.com/dblclick/