如何在原型中读取json对象

时间:2013-07-24 15:25:23

标签: javascript asp.net prototypejs

我无法获取返回数据的属性。我是原型的新手。我的错误在哪里?

这是我的代码:

 <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);
    }

2 个答案:

答案 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开发人员