我有一些服务器端方法返回JS对象解析的JSON对象,并尝试通过属性枚举以将输入设置为与属性值相同的名称。我的应用程序在ASP.Net MVC 5中,并且JSON正常工作。
这是我的JS:
function ProcessPropertyChange(url, name)
{
var val = $("[name='" + name + "'").val();
url = url + "&propValue=" + val;
$.get(url, function (data) {
var obj = JSON.parse(data);
for (var prop in obj)
{
if(obj.hasOwnProperty(prop))
{
$("[name='" + prop + "'").text = obj[prop];
alert(prop);
}
}
});
}
JSON字符串示例为:
[{"FullAddress" : "123 w. oak", "ParentName":""}]
那是从我的代码中提取的。
当我在开发人员控制台中查看对象时,可以看到带有正确的
names, FullAddress and ParentName
的属性,但是,当我尝试通过它们枚举时,它们的属性returns "0" and the value of obj[prop] is always [Object object]
。有任何想法吗?如果需要,可以发布更多代码。
谢谢!
最佳答案
obj
是一个以对象为成员的数组,因此该对象的索引为0 ... length-1,这就是为什么您获得0的原因。
如果您期望数组只有1个值,则不返回数组而是返回对象,否则在您的js代码中,从数据的第0
个索引中读取对象。你也可以像这样使用$ .each()
$.get(url, function (data) {
//since data is an array
var obj = data[0];
$.each(obj, function (value, prop) {
$("[name='" + prop + "'").text = value;
alert(prop);
})
}, 'json');