2015-02-07 25 views
0

我有一些ajax返回403錯誤消息,但是當它發生這種情況時,與ajax調用關聯的click()函數不再有效。我不會在ajax調用之前或之後追加或添加任何HTML,並且如果ajax沒有收到403錯誤,則不會出現問題。只是如果我從ajax POST收到403錯誤,那麼click()就會中斷。我怎樣才能解決這個問題?jquery .click()在Ajax 403響應後不起作用

這裏是我的代碼:

$("#add_comment").on('click', null, function() { 
 
    
 
    var data = {token:"{{ Session::token() }}", comment:$('#game_comment_form form textarea').val() }; 
 

 
    $.ajax({ 
 
    type: "POST", 
 
    dataType: 'json', 
 
    url: '/game/comment/{{$game->id}}', 
 
    data: data, 
 
    success: function(data){ 
 
     alert("Success"); 
 
    }, 
 
    statusCode: { 
 
     403: function() { 
 
     alert("Forbidden"); 
 
     } 
 
    }, 
 
    error: function(e){ 
 
     alert("Error"); 
 
     console.log(e); 
 
    } 
 

 
    }); 
 

 
    return false; 
 

 
});

+0

不知道jQuery的ajax函數的內部工作原理,但403節有一個函數附加函數,返回'false',其他函數不返回。也許這會有所作爲。 – Mouser 2015-02-07 09:55:37

+0

技術上來說是一個返回錯誤;在整個語句的結尾處,所以一切最終都會返回false,無論如何。 – justinl 2015-02-07 10:22:05

回答

0

原來我完全可以俯瞰事實,我手動禁用輸入按鈕,只是簡單地忘了重新啓用它在403後,我打算刪除但希望其他人可能會意識到他們的簡單錯誤,因爲我有這個幫助他們。

1

你爲什麼不嘗試$。員額();方法 ?

這樣的...

$.post('/game/comment/{{$game->id}}',data,function(data){ 
    alert("Success"); 
}).done(function(data, textStatus, jqXHR) { 
     // called on success 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    // called on failure 
}).always(function() { 
    // called in both cases 
});