我不繼續,因爲小時,我很frustated,因爲我無法找到我的錯,和/或我失敗的誤解:的Javascript:jQuery的POST請求未正常工作
我想呼籲後端JSON數據 - 通過下面的源代碼:
function dosomething(type)
{
$.post("dosomethingontheserver", {type}, function(myjson) {
// do something usefull with myjson data
}, 'json')
.done(function() {
// just ignore
})
.fail(function(xhr, textStatus, errorThrown) {
console.log(xhr.statusText);
console.log(textStatus);
console.log(errorThrown);
console.log("type "+type);
})
.always(function() {
// alert("finished for type="+type);
}); }
如果該代碼被稱爲經:
dosomething(0);
萬事大吉。但是,如果我把這兩次這樣的:
dosomething(0);
dosomething(1);
我得到的控制檯上執行以下操作:
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data Stack-Trace: [email protected]/jquery-1.12.4.js:9011:10 [email protected]/jquery-1.12.4.js:9335:19 [email protected]/jquery-1.12.4.js:9789:15 [email protected]/jquery-1.12.4.js:10311:8
看來,(第一)請求由呼叫從第二取消和響應不再(再)是json格式。服務器總是返回一個json格式 - 所以服務器端沒有錯誤。如果我在dosomething()函數中花費了一些額外的時間 - 比如alert('hello'),這種情況就不會發生了。
任何想法/提示爲什麼秒調用會中斷第一個(正在進行的)調用?
也許服務器無法處理多個調用並引發錯誤?您是否嘗試過記錄以確認服務器是否爲這兩個調用返回了json數據? – H77
好點。我會檢查這.... –
服務器可以處理multipe請求。後端是在eclipse環境中執行的sevlet(在tomcat 8中)。我在它裏面放了一些調試行 - 兩個請求都被接收到並且兩個響應都被傳輸。兩個響應都被一個靜態字符串取代 - 所以兩個響應都是相同的。 –