2011-11-29 56 views
1

我這樣做很多次:jQuery的AJAX後回調似乎並不工作

var url = '/offers/1/voting'; 
var params = { 'direction': 'up' }; 
$.post(url, params, function() { 
    alert('callback'); 
}); // post 

(我硬編碼值,在這個例子中,但沒有)

所以,通過我的螢火接收所需的JSON響應(200狀態),但回調不執行。這幾乎是我使用的唯一的JavaScript。用jquery 1.6.4和1.7.1試過,兩者都是一樣的。我不知道我錯過了什麼。

幫幫我,堆棧溢出。你是我唯一的希望。

回答

8

如果使用$阿賈克斯,而不是$。員額($。員額是真正的用較少的參數$就重寫),你可以添加一個處理錯誤,看看它是否火災:

jQuery.ajax({ 
     type: "POST", 
     async: true, 
     url: '/offers/1/voting', 
     data: { 'direction': 'up' }, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function (msg) 
       { alert('success') }, 
     error: function (err) 
     { alert(err.responseText)} 
    }); 
+0

它打響了錯誤回調與我的反應。我認爲在響應代碼!= 200時觸發了錯誤回調,但我一定是錯的。所以,我可能在我的控制器中做了錯誤的事情。現在我必須檢查一下。謝謝安德烈! – anders

+1

如果您在POST請求的響應中沒有返回任何數據,那麼jQuery JSON解析器無法解析空響應(空不是有效的JSON),並返回錯誤,儘管200 OK。請注意,dataType參數用於根據$ .post的文檔從服務器返回的數據的格式,而不是傳遞到服務器的數據的格式。如果您知道響應爲空,則將dataType更改爲「text」,您應該看到您的成功處理程序觸發。 –

+0

我會擴展@ SteveGrove的評論 - 這不僅僅是空的響應,而且還包括任何非JSON響應。比方說,如果你發表了一個投票,並且它只是一個數字而返回一個新的投票數,那麼jQuery將無法將其解析爲JSON,並且jQuery將拋出一個錯誤。 – Andrey

-1

試試這個

$.post(url, params, function(callback) { alert(callback); });

+0

是的,我試過,但它也沒有工作。 – anders

+0

你有沒有注意到?還是你收到一個空白的警報? – Kishore

+0

這是一個錯誤迴應,我必須研究它。見安德烈迴應:http://stackoverflow.com/a/8314969/319241 – anders