我很困惑,因爲我有兩個函數,一個使用ajax獲取數據,另一個使用字符串獲取數據。JQuery:解析ajax調用與嵌入的str
function loadMenuData() {
$.ajax({
url: "./shoulders.json",
success: function(data) {
dataObj = $.parseJSON(data);
$.each(dataObj, function(key, value) {
$(document).find("#dropDownDest").append($('<option></option>').val(value.id).html(value.name));
});
}
});
}
function loadMenuDataX() {
var str = '[{"id":"A","name":"Bart"},{"id":"B", "name":"Joe"},{"id":"C", "name":"Gomer"}]';
dataObj = $.parseJSON(str);
$.each(dataObj, function(key, value) {
$(document).find("#dropDownDest").append($('<option></option>').val(value.id).html(value.name));
});
}
我創建的文件shoulders.json
買粘貼單引號'
到文件之間的str
。如果我撥打loadMenuX
,它會正確填寫<select></select>
。如果我叫loadMenu
,它不填寫任何東西。
我已經試過
JSON.parse
代替上面並獲得相同的行爲。我不能使用$("#dropDownDest")
,只好使用$(document).find
。爲什麼?打到DOM每個循環似乎是過度的。什麼是更好的方式來做ajax版本,它會工作,更好?
如果返回有效的json,你不應該在'ajax'調用中使用'parseJSON()'。你應該用http://jsonlint.com/來檢查你的json是否是有效的json,然後你應該使用你的開發者控制檯來查看ajax調用是否拋出任何錯誤,或者更好的添加一些錯誤處理到你的'ajax'呼叫。 – Craicerjack