我无法获取返回数据的属性。我是原型的新手。我的错误在哪里?
这是我的代码:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script>
<script>
var xRequest = new Ajax.Request('PrototypeTest.aspx/Test', {
method: 'post',
contentType: 'application/json; charset=utf-8',
onSuccess: function (val) {
var brands= val.responseText.evalJSON();
alert(brands);
},
onerror: function (val) {
alert('hata');
}
});
</script>
[WebMethod]
public static string Test()
{
List<brand> brands = new List<brand>();
brands.Add(new brand()
{
Name = "BMW",
IsActive = true
});
var json = new JavaScriptSerializer();
return json.Serialize(brands);
}
答案 0 :(得分:1)
你应该改变这一行
`var brands= val.responseText.evalJSON();`
到
`var brands= JSON.parse((JSON.parse(val.responseText));`
或
`var brands= val.responseText.evalJSON().d.evalJSON();`
答案 1 :(得分:0)
如果您的后端脚本发送标头Content-type: application/json
,则Ajax.Request()
方法会自动将您的响应转换为JSON,并且在您的示例中它将存在于val.responseJSON
中。
此实例中不需要在contentType: 'application/json; charset=utf-8',
中设置Ajax.Request()
。
要使ASP.NET添加自定义标题,我认为您使用
Response.AppendHeader("Content-type", "application/json");
但我不是ASP.NET开发人员