我正在尝试解析从控制器操作返回的JSON响应。我的Javascript代码如下:
$('#searchform').submit(function(e){
var keyword = $("#q").val();
$.get('search',$(this).serialize(),function(data){
var data_obj = $(data);
var output="<ul>";
for (var i in data_obj)
{
output+="<li>" + data_obj[i].name + ", " + data_obj[i].id + "</li>";
}
output+="</ul>";
$('#content').html(output);
});
e.preventDefault();
});
我能够成功解析数据,但html显示数据和包含单词“undefined”的li标签很多,如下所示
john, 11
doe, 14
robert, 15
undefined, undefined
undefined, undefined
, undefined
undefined, undefined
, undefined
, undefined
, undefined
我无法理解为什么我得到上述结果?我只想从响应返回的数据实际上是前三行。我是JQUERY的新手。提前致谢
答案 0 :(得分:1)
如果它是JSON,为什么要将它包装在jQuery中?
$.get('search',$(this).serialize(),function(data){
var data_obj = $(data); // won't work ?
......
设置正确的dataType,它将通过jQuery
使用JSON.parse进行解析$.get('search',$(this).serialize(),function(data){
var output="<ul>";
for (var i in data) {
output+="<li>" + data[i].name + ", " + data[i].id + "</li>";
}
output+="</ul>";
$('#content').html(output);
}, 'json'); // dataType
并正确创建元素:
$.get('search',$(this).serialize(),function(data){
var ul = $('<ul />');
$.each(data, function(i, value) {
ul.append( $('<li />', {text : value.name + ', ' + value.id}) );
});
$('#content').html(ul);
}, 'json'); // dataType