jQuery的AJAX沒有返回正常。由於未定義的變量,獲取錯誤「Uncaught SyntaxError:Unexpected token u」。帶有多個嵌套的.when內部的jQuery ajax。返回undefined
下面是我的代碼和流程。
此方法將上一個按鈕,點擊它在內部調用具有依賴性的多種方法的情況下調用。在下面的例子中,流量是masterProcess-> buildAndroidApk-> unlockAndroidKey
function masterProcess(thisForm){
$.when(buildAndroidApk()).then(function(result){
obj = JSON.parse(result);
});
}
function buildAndroidApk(){
$.when(unlockAndroidKey()).then(function(result){
obj = JSON.parse(result);
//There are some other .when based on the obj response
return result;
});
}
function unlockAndroidKey(){
//this function connects to server via jQuery Ajax and gets a json string inside success or error block
return '{"success":"1","message":"","content":null}';
}
功能unlockAndroidKey獲取JSON字符串,我可以能夠接收內部buildAndroidApk。但masterProcess正在接收未定義的字符串,並且JSON.parse導致錯誤「Unexpected token u」。
我不知道我是否已經解釋了我的查詢清楚,但是如果需要的話,我可以在更詳細的解釋。
只是爲了理解目的我硬編碼我的代碼中的json字符串。其實我在PHP中使用數組構建json,並在JavaScript中進行JSON :: parse。你是對的,函數buildAndroidApk()沒有返回promise。在我將$ return放在$之前後,現在它正在返回。 – Malaiselvan 2014-12-05 23:38:58
@Malaiselvan - 你明白,當你只有一個承諾時,你不需要'.when()'。你可以直接在promise上使用'.then()'。 – jfriend00 2014-12-06 01:47:01