C# 如何从webservice将xml数据从webform返回到jQueryAjax调用

C# 如何从webservice将xml数据从webform返回到jQueryAjax调用,c#,xml,jquery,webforms,asmx,C#,Xml,Jquery,Webforms,Asmx,这是我的jqueryajax调用。这在document.ready()函数中。据推测,这将读取我的webservice中webmethod返回的xml数据: $.ajax({ type: "POST", url: "http://tempuri.org/NewsletterList.asmx/HelloWorld", contentType: "application/xml;

这是我的jqueryajax调用。这在document.ready()函数中。据推测,这将读取我的webservice中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);
                }
            });
这是我的webservice中的webmethod调用。我能够完全成功地创建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;
    }

使用web服务,您不需要像现在这样手动构建xml。您应该做的是返回原始形式的c#对象。您应该具有以下内容:

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


}

谢谢你的建议。事实证明它与浏览器有关。当我使用CDN时,error函数中的第三个参数表示映射中存在某种异常。我用谷歌搜索它:“失败nsresult:”0x80004005(NS\U错误\U失败)“但只能找到一个类似的错误。我在IE10中试用过,效果不错

谢谢,它确实自动序列化了我的对象,但是,当它到达JQuery部分时仍然失败,我尝试输入error:function中抛出的参数,但只有第二个参数有文本,它只是说“error”,我不相信JQuery是为遍历任何ol html而设计的。我相信如果您使用firebug或chrome dev tools之类的网络检查器,那么您需要使用$.parseXml。网络请求是什么样子的?你采用的是成功方法还是错误方法?谢谢你的建议。事实证明它与浏览器有关。当我使用CDN时,error函数中的第三个参数表示映射中存在某种异常。我在谷歌上搜索了一下,但只能找到一个类似的错误。我在IE10中试用过,效果不错!非常感谢。
.success(function(data){
   var xml = $.parseXml(data);
   xml.find(yadayadayada.....
});