【问题标题】:How to handle jSON XMLHttpRequest response?如何处理 JSON XMLHttpRequest 响应?
【发布时间】:2011-08-10 09:08:35
【问题描述】:

我正在尝试控制我发送回客户端的 json 响应,但不知道具体如何.. 这是一个简单的演示:

js代码

xhr = new XMLHttpRequest();
xhr.open("POST", "page.aspx", true);
xhr.send();

// handle the response with xhr.responseText

.cs代码

    bool success = false;
    string message = String.Empty;

    // Create JSON Response
    var jsonData = new
    {
        success = success,
        message = message
    };

    Response.Write(jsonData);    

问题是当我查看 xhr.responseText 时,我看到:

"{ success = False, message = } 
<!DOCTYPE html PUBLIC ....
....
..
"

【问题讨论】:

    标签: javascript asp.net json xmlhttprequest response.write


    【解决方案1】:

    您想在编写 jsonData 后执行 Response.Clear() 和 Response.End()。

    然后您需要在 javascript 中处理 JSON 响应。我推荐Crockford's JSON library

    我还建议使用 jQuery 的 $.ajax() 函数,而不是手动滚动您自己的 XHR 调用。

    PS。 Ajax 调用最好对您的 ASPX 页面上声明的 ASHX 资源或 PageMethods/WebMethods 进行。更好的是,放弃网络表单并使用 ASP.NET MVC 以及从控制器返回的 JsonResults。

    PPS。如果你最终使用了 WebMethods,this article 非常好。

    【讨论】:

    • 单独清除没有用,最终它成功了。我的回复只包含成功和消息 - 我真的需要图书馆吗?并仅仅因为您在这里看到的内容而放弃网络表单?
    • 在这种情况下,您可以投票赞成我的答案并将其标记为正确 :) 您不一定要放弃网络表单,但我建议使用现有的库。站在巨人的肩膀上——他们无疑解决了你甚至不知道的问题:)
    【解决方案2】:

    你需要Response.Clear()清除Response.Write之前的回复

    【讨论】:

      【解决方案3】:

      您的 cs 代码未生成有效的 JSON(除了在 JSON 数据之后显示其他内容)。所有 JSON 描述符都必须用双引号引起来,任何字符串值也必须如此。值与它们的描述符用冒号分隔。例子: {"success": false, "message": "It didn't work"}.

      查看http://json.org/ 了解可用于特定语言的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多