我在服务器上有一个JSON响应,响应是一个包含三列的List对象。但是要填写选择选项列表,我只需要使用两个。我能够在客户端上接收数据但是我无法填写选择选项列表。
Jquery的
$("select#offenceCatId").change(function(){
$.ajax({
type:'GET',
url:'getCrimeTypeList.htm',
data:{crimeCatId: $(this).val()},
headers: {
Accept: 'application/json'
},
dataType: 'json',
success:function(data){
var crimeType = JSON.stringify(data);
var options = '';
for (var i = 0; i < crimeType.length; i++) {
options += '<option value="' + crimeType.crimeTypeId[i] + '">' + crimeType.crimeTypeDesc[i] + '</option>';
}
$("select#offenceTypeId").html(options);
}
});
});
JSON数据
[{“crimeTypeDesc”:“Incitement to Murder”,“crimeCatId”:4,“crimeTypeId”:39},{“crimeTypeDesc”:“Sexual and Nonualual Assults”,“crimeCatId”:4,“crimeTypeId” :40},{ “crimeTypeDesc”: “色情”, “crimeCatId”:4 “crimeTypeId”:41},{ “crimeTypeDesc”: “审查”, “crimeCatId”:4 “crimeTypeId”:42},{” crimeTypeDesc“:”Statutory Rape“,”crimeCatId“:4,”crimeTypeId“:43},{”crimeTypeDesc“:”HIV的犯罪传播“,”crimeCatId“:4,”crimeTypeId“:44},{”crimeTypeDesc“ : “通奸”, “crimeCatId”:4 “crimeTypeId”:45}]
我只需要使用crimeTypeDesc和crimeTypeId
填充选择选项列表错误 TypeError:crimeType.crimeTypeId未定义
答案 0 :(得分:2)
如果您收到JSON数据,则不希望stringify
调用。您应该可以使用以下内容替换success
方法:
success:function(crimes){
var options = '';
for (var i = 0; i < crimes.length; i++) {
var crime = crimes[i];
options += '<option value="' + crime.crimeTypeId + '">' + crime.crimeTypeDesc + '</option>';
}
$("select#offenceTypeId").html(options);
}
答案 1 :(得分:1)
您不需要对json对象进行字符串化,因为这会使对象变平,并且您将无法再使用点表示法来访问它的属性。此外,您的另一个问题是您尝试访问这些值的方式。你说,crimeType.crimeTypeId [i]但你需要使用crimeType [i] .crimeTypeId作为索引引用你所指的crimeType中的哪个对象不是你想要的crypeTypeIds中的哪个id(反正只有一个)这里是一个使用工作脚本减去ajax调用。你需要做的就是用你在小提琴中减去json对象的内容替换你成功回调中的内容。您可以根据需要进行调整。我留下了一个控制台日志,因为我没有你的HTML。
小提琴 http://jsfiddle.net/XJsH2/
$(document).ready(function(){
var crimeType = [{"crimeTypeDesc":"Incitement To Murder","crimeCatId":4,"crimeTypeId":39},{"crimeTypeDesc":"Sexual and Non Sexual Assults","crimeCatId":4,"crimeTypeId":40},{"crimeTypeDesc":"Pornography","crimeCatId":4,"crimeTypeId":41},{"crimeTypeDesc":"Censorship","crimeCatId":4,"crimeTypeId":42},{"crimeTypeDesc":"Statutory Rape","crimeCatId":4,"crimeTypeId":43},{"crimeTypeDesc":"Criminal Transmission Of HIV","crimeCatId":4,"crimeTypeId":44},{"crimeTypeDesc":"Adultery","crimeCatId":4,"crimeTypeId":45}];
var options = '';
for (var i = 0; i < crimeType.length; i++) {
options += '<option value="' + crimeType[i].crimeTypeId + '">' + crimeType[i].crimeTypeDesc + '</option>';
}
console.log(options);
});
答案 2 :(得分:1)
您不需要对数据进行字符串化,因为该函数返回一个JSON对象。 jQuery为每个funktion都有一个,你可以使用它来通过数组。
success: function(data)
{
var options = "";
$.each(data, function(crime)
{
options += '<option value="' + crime.crimeTypeId + '">' + crime.crimeTypeDesc + '</option>';
});
$("select#offenceTypeId").html(options);
}