{"paging":
{"pageNum":2,
"action":"Next",
"type":"",
"availableCacheName":"getAllFunds",
"selectedCacheName":"",
"showFrom":101,
"showTo":200,
"totalRec":289,
"pageSize":100},
"Data": [{"sourceCodeId":0,
"radio_fund":"individual",
"availableFunds":[],
"fundId":288,
"searchName":[],
"fundName":"Asian Equity Fund A Class Income",
"srcFundGrpId":"PGI",
"firstElement":0,
"lastElement":0,
"totalElements":0,
"pageList":[],
"standardExtract":true}]
}
我有上面格式的json文件,有两个文件,一个是分页,一个是数据数组。
我能够检索分页的值,但是我无法使用jquery的.each函数检索数据数组的值。
任何建议或意见真的很感激。
$.ajax({ url: "list.pubfw",
data :{action:action},
dataType: "json",
type:"POST",
success: function(result){
var options = '';
$.each(result, function(){
options += '<option value="' +
result.jsonData.fundId + '">' +
result.jsonData.fundId + "-" +
result.jsonData.fundName + "-" +
result.jsonData.srcFundGrpId + '</option>';
});
$("#selectCol").empty();
$("#selectCol").html(options);
},
error: function(xmlHttpRequest, textStatus, errorThrown){
alert("ERROR"+errorThrown);
alert("STAT"+textStatus);
alert("xmlHttpRequest"+xmlHttpRequest);
}
});
答案 0 :(得分:0)
JSON验证中可能存在错误,请检查Json Lint,因为JSON很棘手。
答案 1 :(得分:0)
好的,这里有两个注释:
1.首先,您应该使用result.Data
而不是result.jsonData
2. Data
字段包含一个对象数组,您必须在其上循环或使用索引
3.如果Data
字段不能容纳多个项目,则不需要$.each
方法,因此您可以轻松使用:
result.Data[0].fundId
..等
但是因为它是一个对象数组,所以我认为它可能包含更多项目,因此每个项目都需要但不是你使用它的方式,而是使用this
答案 2 :(得分:0)
我的猜测是你需要更改数据部分:
data: {action: action}
要:
data: {"action": action}
这样,在服务器端,您可以检查进入请求的“action”属性,而不是将属性名称作为其值的变量。
另外,我会将您的成功功能更改为:
success: function(result){
var selectCol = $('#selectCol');
selectCol.empty();
$.each(result, function(){
var option = $('<option/>');
option.val(result.jsonData.fundId);
option.text(
result.jsonData.fundId + "-" +
result.jsonData.fundName + "-" +
result.jsonData.srcFundGrpId);
selectCol.append(option);
});
}
这不会构建(可能)非常大的字符串,使用text()
比使用html()
更安全,因为html()
只会插入以html形式出现的内容,你容易受到XSS攻击。 text()
将html编码所有内容。