0

これは私の JQuery AJAX 呼び出しです。これは document.ready() 関数内にあります。これはおそらく、私の Web サービスの webmethod によって返された xml データを読み取るものです。

            $.ajax({
                type: "POST",
                url: "http://tempuri.org/NewsletterList.asmx/HelloWorld",
                contentType: "application/xml; charset=utf-8",
                dataType: "xml",
                success: function (xml) {
                    $(xml).find('Newsletter').each(function () {
                        var title = $(this).find('Title').text();
                        var created = $(this).find('Created').text();
                        AddOption(title);
                        alert('Ywes');
                    });
                },
                error: function (msg, m2, m3) {
                    alert(m2);
                }
            });

これは、私の Web サービスでの Web メソッド呼び出しです。xml を完全に成功させることはできますが、xml を ajax 呼び出しに戻すのが難しいと感じています。

    [WebService(Namespace = "http://tempuri.org/")]
    .
    .
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
    public XmlDocument HelloWorld()
    {
        //Instantiate model object
        nl = new Newsletter();

        //Initiate XML stuff
        StringBuilder sb = new StringBuilder();
        XmlWriterSettings settings = new XmlWriterSettings();
        XmlWriter writer = XmlWriter.Create(sb, settings);

        writer.WriteStartDocument();
        writer.WriteStartElement("Root");

        foreach (Newsletter nls in nl.GetNewsletterList())
        {
            writer.WriteStartElement("Newsletter");
            writer.WriteElementString("Title", nls.Title);
            writer.WriteElementString("Created", nls.Created.ToString());
            writer.WriteEndElement();
        }

        writer.WriteEndElement();
        writer.WriteEndDocument();
        writer.Flush();

        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(sb.ToString());
        return xmlDocument;
    }
4

2 に答える 2

2

Web サービスを使用すると、手動で xml を作成する必要はありません。あなたがすべきことは、C# オブジェクトを生の形式で返すことです。代わりに次のものが必要です。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public List<Newsletter> HelloWorld()
{
    //Instantiate model object
    return new Newsletter().GetNewsletterList();


}

ASP.NET は、オブジェクトを xml にシリアル化します。

また、JavaScript では、.find を使用する前に次のように xml を解析する必要があります。

.success(function(data){
   var xml = $.parseXml(data);
   xml.find(yadayadayada.....
});
于 2013-06-26T20:26:25.410 に答える
0

ご提案いただきありがとうございます。ブラウザと関係があることがわかりました。CDN を使用すると、エラー関数の 3 番目のパラメーターは、マッピングに何らかの例外があったことを示しています。「Failure nsresult: "0x80004005 (NS_ERROR_FAILURE)" を使用してグーグルで検索しましたが、それに似たエラーしか見つかりませんでした。IE10で試してみたところ、動作しました!

于 2013-06-26T22:02:37.290 に答える