2016-05-01 132 views
0

之前我有很多,關於Android的除外(鉻伏50)所有平臺上工作的jQuery AJAX請求的Web應用程序。我使用jQuery 2.1.4的Android/Chrome的jQuery的AJAX請求失敗,parsererror讓服務器

下面的代碼:

var createRequest = $.ajax({ 
    type: 'POST', 
    url: '/api/item/?', 
    data: { 
     u_id: uid, 
     title: title, 
     text: text, 
    } 
}); 

createRequest.done(function(response){ 
    console.log('DONE'); 
    console.log(response); 
}); 

createRequest.fail(function(response){ 
    console.log('FAIL'); 
    console.log(response); 

}); 

當我觸發的createRequest,我得到了網絡控制檯200響應,但請求失敗,實際上不會繼續服務器。發送給.fail的響應是一個帶有statusText「parsererror」的xhr對象。

在控制檯:

FAIL 
Object {readyState: 4, responseText: "", status: 200, statusText: "parsererror"} 

不管我怎麼努力(包括數據類型: 'JSON',數據類型: '文本',JSON字符串化之前發送的數據,加入了全網址爲http://而不是相對url),我無法獲得$ .ajax調用來通過parsererror並實際發送數據到服務器。

這完美的作品以及所有桌面瀏覽器和iOS的Safari。

任何想法?

+0

我得到同樣的錯誤,即使我嘗試做一個簡單的$就GET請求不同的端點。該請求失敗並伴有parsererror而沒有碰到服務器。 – byron

回答

0

好吧,我想通了。問題是?在沒有參數的url結尾處。該請求正在構建爲

http://www.example.com/api/item/?&uid=1234&title=Test&text=test 

這是/? &這是問題

將參數添加到初始網址定義解決了這個問題:

var createRequest = $.ajax({ 
    type: 'POST', 
    url: '/api/item?u_id=' + uid, 
    data: { 
     title: title, 
     text: text 
    } 
}); 
+0

讓我知道你是否需要一個新的令牌。 – Omar

0

後文本的最後一個逗號:文本,拋出其關閉。應該是:

var createRequest = $.ajax({ 
 
type: 'POST', 
 
url: '/api/item/?', 
 
data: { 
 
    u_id: uid, 
 
    title: title, 
 
    text: text 
 
} 
 
});

+0

感謝您的建議亞歷克斯。我嘗試刪除尾部逗號,並得到相同的結果。因parseError失敗。 – byron

+0

事實上,即使我完全刪除數據屬性,請求也永遠不會到達服務器。它只是立即失敗。 – byron