2011-12-18 149 views
1

我正在寻找解析apache请求失败后我的服务器在xml中返回的错误。该XML的样子:jQuery解析简单的XML作为Ajax请求的一部分

<?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,并将其与“contactErrors”的ID附加到一个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) 
      } 
     } 
    }); 
}); 

任何帮助非常感谢!

+0

我推荐使用JSON而不是XML来处理这种东西 – SinistraD 2011-12-18 20:49:54

+0

我正在考虑使用JSON,但是并没有丝毫的想法来解析它:D – 2011-12-18 20:53:32

回答

0

JSon为什么不?对于XML,您可以在您的动作中返回XML

return this.Content(xmlStringValue, "text/xml") 
0

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

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

如果你想写自己的JSON认为它作为一个正常的JavaScript对象,其中包含与价值观的成员,可以是数字,布尔值,数组或字符串。