基本上我試圖返回從Ajax請求獲取的名稱列表。當只有一個名字時,它完美地起作用。然而,有了多個名字,我開始看到我無法解釋的行爲。Jquery Ajax Json對象
function getIDFromInput(input){
sendToID = new Array; //An Array of "Name :Id"
$.ajax({
type:"GET",
url: "user_search.php",
contentType:"application/x-www-form-urlencoded; charset=utf-8",
dataType:"json",
async:false,
data: "q="+input,
success:function(data){
if(data.success){
var userLength = data.success.length;
if(userLength == 1){ // For one user everything works fine
var userNum = data.success.users[0];
var userName = data.success.usersNames[userNum];
sendToID[0] = userName + " :"+userNum;
}
else if(userLength > 1){ // Multiple users it fails
for(i = 0; i < userLength; i++){
var userNum = data.success.users[i];
//this call works
var userName = data.success.usersNames[userNum];
//this call fails, even though it seems to be the same call as above
sendToID[i] = userName + " :"+userNum;
}
}
else if(userLength < 1){ // never enter here
}
}
},
error:function(data){ //After it fails it goes into here
}
});
return sendToID;
}
我傳遞迴< 2,JSON(即不工作的人,正下方)
{"success":{"length":2,"userNames":[{"5":"Travis Baseler"},{"6":"Ravi Bhalla"}],"users":["5","6"]}}
我回傳,做的工作是
之一的JSON{"success":{"length":"1","usersNames":{"6":"Ravi Bhalla"},"users":["6"]}}
有誰知道爲什麼第一個作品,但第二個沒有?
你應該避免同步AJAX請求時可能 – meagar
@meagar:我知道我要出去在這邊,但我確定有一個同步的理由。如果他對JS/jQuery一無所知,他甚至不知道這個選項是否存在。 –
一旦你理清了數據格式,所有的情況都是一樣的,你根本不需要if/else。您可以從for循環執行所有三個分支。 for循環自動處理0的長度,1的長度和> 1的長度。 – jfriend00