我在从JQery.ajax调用中获取JSON对象的内容时遇到问题。我的电话:
$('#Search').click(function () {
var query = $('#query').valueOf();
$.ajax({
url: '/Products/Search',
type: "POST",
data: query,
dataType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
for (var x = 0; x < data.length; x++) {
content = data[x].Id;
content += "<br>";
content += data[x].Name;
content += "<br>";
$(content).appendTo("#ProductList");
// updateListing(data[x]);
}
}
});
});
JSON对象似乎被正确返回,因为"alert(data)“显示以下内容
[{"Id": "1", "Name": "Shirt"}, {"Id": "2", "Name":"Pants"}]
但是当我尝试使用以下命令向页面显示Id或名称时:
content = data[x].Id;
content += "<br>";
content += data[x].Name;
content += "<br>";
它向页面返回"undefined“。我做错了什么?
谢谢你的帮助。
发布于 2011-03-13 19:35:31
数据将以JSON的字符串表示形式返回,而不是将其转换回JavaScript对象。将dataType
设置为仅'json'
即可自动转换。
发布于 2013-07-02 03:18:17
我建议您使用:
var returnedData = JSON.parse(response);
将JSON字符串(如果只是文本)转换为JavaScript对象。
发布于 2015-07-15 14:20:30
确保这种类型的错误(使用字符串而不是json)不会发生的一种方法是查看alert
中打印的内容。当你这样做的时候
alert(data)
如果data是一个字符串,它将打印其中包含的所有内容。但是,如果打印是json对象。您将在警报中获得以下响应
[object Object]
如果这是响应,那么您可以确保可以将其用作对象(在本例中为json)。
因此,您需要先将字符串转换为json,然后再通过执行以下操作使用它:
JSON.parse(data)
https://stackoverflow.com/questions/5289078
复制相似问题