首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery getJSON - ajax解析错误

JQuery getJSON - ajax解析错误
EN

Stack Overflow用户
提问于 2009-03-10 17:25:10
回答 17查看 74.4K关注 0票数 15

我尝试使用JQuery getJSON和ajax解析以下json响应:

代码语言:javascript
运行
复制
[{"iId":"1","heading":"Management Services","body":"<h1>Program Overview</h1><h1>January 29, 2009</h1>"}]

我也尝试过转义"/“字符,如下所示:

代码语言:javascript
运行
复制
[{"iId":"1","heading":"Management Services","body":"<h1>Program Overview <\/h1><h1>January 29, 2009<\/h1>"}]

当我使用getJSON时,它不会执行回调。因此,我用JQuery ajax尝试了一下,如下所示:

代码语言:javascript
运行
复制
$.ajax({
    url: jURL,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    beforeSend: function(x) {
        if(x && x.overrideMimeType) {
            x.overrideMimeType("application/j-son;charset=UTF-8");
        }
    },
    success: function(data){
        wId = data.iId;
        $("#txtHeading").val(data.heading);
        $("#txtBody").val(data.body);
        $("#add").slideUp("slow");
        $("#edit").slideDown("slow");
    },//success
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
    }
});

ajax命中错误ans警告以下内容:

代码语言:javascript
运行
复制
XMLHttpRequest=[{"iId":"1","heading":"Management Services","body":"<h1>Program Overview </h1><h1>January 29, 2009</h1>"}]

textStatus=parseerror

errorThrown=undefined

然后,我使用以下代码尝试了一个简单的JSON调用来返回JQuery:

代码语言:javascript
运行
复制
$.get(jURL,function(data){
    var json = eval("("+data+");");
    wId = json.iId;
    $("#txtHeading").val(json.heading);
    $("#txtBody").val(json.body);
    $("#add").slideUp("slow");
    $("#edit").slideDown("slow");
})

.get返回JSON,但无论我如何修改JSON (内容类型标题、其他格式变体等),eval都会出现错误。

我提出的问题是,在JSON中返回HTML并对其进行解析似乎存在问题。然而,我希望我可能遗漏了一些东西,使我能够通过JSON获得这些数据。有谁有什么想法吗?

EN

回答 17

Stack Overflow用户

发布于 2009-03-10 18:46:47

您拥有的JSON字符串是一个包含一个对象的数组,因此要访问该对象,您必须首先访问该数组。使用如下所示的json.php:

代码语言:javascript
运行
复制
[
    {
        "iId": "1",
        "heading": "Management Services",
        "body": "<h1>Program Overview</h1><h1>January 29, 2009</h1>"
    }
]

我刚试过这个

代码语言:javascript
运行
复制
$.getJSON("json.php", function(json) {
    alert(json[0].body); // <h1>Program Overview</h1><h1>January 29, 2009</h1>
    alert(json[0].heading); // "Management Services"
    alert(json[0].iId); // "1"
});

我还尝试了这个:

代码语言:javascript
运行
复制
$.get("json.php", function(data){
    json = eval(data);
    alert(json[0].body); // <h1>Program Overview</h1><h1>January 29, 2009</h1>
    alert(json[0].heading); // "Management Services"
    alert(json[0].iId); // "1" 
});

它们对我来说都很好用。

票数 7
EN

Stack Overflow用户

发布于 2010-03-18 02:43:15

如果有人在这方面仍然有问题,那是因为您的响应需要是JSON字符串和内容类型"application/json“。

asp.net (c#)中的HTTP示例:

代码语言:javascript
运行
复制
public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.Write("{ status: 'success' }");
    }

hth,

马蒂

票数 3
EN

Stack Overflow用户

发布于 2009-03-10 17:32:23

你有没有尝试过对HTML进行XML编码(即)?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/631418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档