我想從JSON創建一個動態選擇輸入(下拉菜單)。jQuery JSON AJAX返回數據錯誤
我已經嘗試了兩種方法來獲取JSON對象的下拉菜單選擇輸入(我已標記嘗試1和嘗試2在註釋掉JS)。
我有字符串返回到客戶端,但是,前端沒有看到它作爲JSON對象,而只是一個字符串。我試圖使用.Net序列化程序和Json2 Parse解析和序列化它。
AJAX調用
function getcategories(categoryId) {
$.ajax({
type: 'POST',
url: '/Services/Category.aspx/GetCategory',
data: '{"categoryId":"' + categoryId + '"}',
contentType: 'application/json; charset=utf-8',
global: false,
async: false,
dataType: 'json',
success: function (msg) {
if (msg.d == null || msg.d == '') {
//end of the road. not more categories. so don't add another DDL
jsonList = '';
console.log("No more DDLs: ");
} else {
//attempt 1: converting returned data to Json
//var json = JSON.parse(msg.d);//just returns [object object]
//jsonList = json.d;
//attemp2: trying to consume stringbuilder string as Json
//or if I do the below, I also get an error Table does not exist
//jsonList = msg.d
}
}
});
return false;
}
返回的JSON
{
"Table": [{
"categoryid": "0",
"categoryname": "--Select Category1--"
}, {
"categoryid": "2",
"categoryname": "subname2"
}, {
"categoryid": "3",
"categoryname": "subname3"
}, {
"categoryid": "4",
"categoryname": "subname4"
}]
}
試圖在一個循環這裏使用:
//simplified function inside the ready()
//add dynamic select with options from Json
$('<select id ="DDL' + nextSelect + '" class="cascade"><option value="-">-- Step' + nextSelect + ' --</option></select>').appendTo('div .chooseSteps');
console.log("Obj " + categoryJson); //shows the Json string
console.log("TABLE " + categoryJson.Table); //returns undefined :(
var listItems = "";
//Says that Table does not exist (undefined)
for (var i = 0; i < categoryJson.Table.length; i++) {
listItems += "<option value='" + categoryJson.Table[i].categoryid + "'>" + categoryJson.Table[i].categoryname + "</option>";
}
所以我的目標就是要要顯示的選項,並得到Table的值。
我在整個下午搜索了論壇,找不到可行的解決方案,這讓我瘋狂。感謝你的理解。
我使用jQuery 1.7.1 AJAX與Json2.js(如爲舊版瀏覽器備份)與Asp.Net 4.
你有過這種東西與jquery.each javascript對象循環? http://encosia.com/jquery-for-the-asp-net-developer/ –
返回的JSON是真正的JSON還是您所期望的?應該封裝在{「d」:{}} –
@chris vdp msg對象具有d包裝器。裏面的d是上面列出的字符串。我已經通過了這些Encosia頁面和許多關於SA的其他回覆,但還沒有。 – User970008