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で連結する必要もありません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"}

コードで絶対に変更する必要があるもう 1 つのことは、次の置換です。

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 に答える