0

我正在尝试将 json 结果转换为 xml 类型。但是,它似乎不起作用。无法找出问题所在。请帮忙。

代码是:

<script src="../Jquery Autocomplete/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../Jquery Autocomplete/jquery.json-2.2.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function() 
    {
        $(".openModalLink").click(function()
        {
        var start=$(this).parent().parent().find(".start").val();
        var end =$(this).parent().find(".end").val();
        $.ajax(
              {
                type: "POST",
                url: "frmCollegeExamScheduleMst.aspx/ServerSideMethod",
                data: "{'paraml': '" + start + "','param2': '" + end + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success:function(result)
                {
                    var xmlDoc = $.parseXML(result);
                    var xml = $(xmlDoc);
                    var customers = xml.find("Table");
                    var data = new Array();
                    var i =0;
                    $.each(customers, function () 
                    {
                        //do something
                    });
                },
                error: function(err) {
                     alert('Error:' + err.responseText + '  Status: ' + err.status);
                }
            });
        });
    });
4

3 回答 3

0

当您指定 dataType: "json" 时,响应将转换为 JSON 对象,并且不会保留为字符串。

尝试删除参数。

于 2012-06-14T06:14:02.813 回答
0

如果您的 AJAX 请求的响应是,xml那么您应该相应地设置它。

$.ajax({
  data: {paraml: start, param2: end},
  dataType: "xml",
  success:function(result) {
    var $xml = $(result);
  }
});

不需要contentType也不连接 in data

于 2012-06-14T06:14:57.767 回答
0

试试这样:

success: function(result) {
    var xmlDoc = $.parseXML(result.d);
    ...
}

注意result.d. 我猜你的 ASP.NET PageMethod 看起来像这样:

[WebMethod]
public static string ServerSideMethod(string param1, string param2)
{
    DataSet ds = ...
    return ds.GetXml();
}

这个字符串是 JSON 序列化的。为了在客户端检索它,ASP.NET 基础结构添加了d参数:

{"d":"some xml here"}

您绝对应该在代码中更改的另一件事是替换:

data: "{'paraml': '" + start + "','param2': '" + end + "'}"

和:

data: JSON.stringify({ param1: start, param2: end })

以确保您的请求参数是正确的 JSON 编码。例如,想想如果 会发生什么start = 'foo\'bar'。你最终会得到:

data: {param1: 'foo'bar', param2: 'baz'}

如您所见,这完全破坏了您的 JSON。

于 2012-06-14T06:20:57.350 回答