jQuery解析简单XML作为Ajax请求的一部分

时间:2011-12-18 20:43:21

标签: xml jquery jquery-selectors xml-parsing

我正在寻找在不成功的ajax请求之后解析我的服务器在xml中返回的错误。 xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<errors>
  <error>Full name can't be blank</error>
  <error>Email can't be blank</error>
</errors>

我只是尝试从xml构建一个ul标记,并为xml响应中的每个错误添加一个li标记。响应应该以输出此HTML的方式处理,并将其附加到id为“contactErrors”的div:

<ul>
   <li>Full name can't be blank</li>
   <li>Email can't be blank</li>
</ul>

目前我有以下jQuery,但我无法弄清楚如何正确解析HTTP 422(表单错误/不可处理实体)响应。

$("#new_message").submit(function(e){
    e.preventDefault();

    $.ajax({
        type: "POST",
        url: "messages.xml",
        data: $(this).serialize(),
        cache: false,
        statusCode: {
            201: function(data) {
                $("#new_message").slideUp();
                $("#contactSuccess").fadeIn(2500);
            },
            422: function(data) {
                // XML response should be processed here and can be accessed by calling $(data)
            }
        }
    });
});

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

为什么不用JSon?对于XML,您可以使用

在操作中返回XML
  return this.Content(xmlStringValue, "text/xml")

答案 1 :(得分:0)

JSON更适合服务器客户端通信。在服务器端,您可以使用json_encode在ASP.NET中使用JavaScriptSerializer将对象编码为PHP中的JSON,依此类推。您可以在json.org上找到完整列表(向下滚动)。解析它非常简单,因为它是一个有效的JavaScript代码,你只需要评估它。

var myObject = eval('(' + myJSONtext + ')');

如果您想编写JSON,请将其视为普通的javascript对象,其中包含具有值的成员,可以是数字,布尔值,数组或字符串。