XML解析错误:未找到任何元素

时间:2011-03-18 12:57:10

标签: asp.net xml jquery service

我有一个ASP.Net 4.0 Web Service方法,它返回格式良好的XML文档。我在本地浏览器中成功显示XML,并在生产服务器上部署后。

当我尝试通过jQuery ajax调用该方法时,我收到错误:

XML解析错误:未找到任何元素位置:moz-nullprincipal:{6c0c99b3-0fed-454f-aa6e-e0fca93a521c}行号1,第1列:

        $.ajax(
        {
            url: 'http://mywebservice.com/WebService/Service.asmx/UserData',
            type: 'GET',
            contentType: "text/html; charset=utf-8",
            dataType: "xml",
            data: 'authorizedId=1234&authorizedUser=Test&authorizedCode=xyz',
            'success': function (data) {
                $('#XMLContent').html(data.responseText);

            },
            'error': function (xhr, status) {
                alert(status);
            },
            'complete': function (xhr) {
            }
        });

我已尝试更改contentType但结果相同。

但是,我可以像这样在C#中进行调用,并获得格式良好的XML:

XmlDocument document = new XmlDocument();
document.Load("http://mywebservice.com/WebService/Service.asmx/UserData?authorizedId=1234&authorizedUser=Test&authorizedCode=xyz");
ViewData["XMLData"] = document.OuterXml;

在我的网络服务web.config中:

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

...谢谢

2 个答案:

答案 0 :(得分:2)

如果Web服务与页面不在同一个域中,则无法使用AJAX调用从其他域获取数据。

您可以在应用程序中创建代理Web服务,该服务调用您的外部Web服务,然后从AJAX / jQuery调用您自己的代理。

http://forum.jquery.com/topic/jquery-ajax-and-xml-issues-no-element-found

希望有所帮助

答案 1 :(得分:0)

谢谢bgs264 ......

现在在我的aspx页面中:

$.ajax(
{
    url: '/Home/WebService',
    type: 'GET',
    contentType: "text/html",
    dataType: "html",
    data: 'authorizedId=1234&authorizedUser=Test&authorizedCode=xyz',
    'success': function (data) {
        alert(data);
        $('#XMLContent').html(data);
    },
    'error': function (xhr, status) {
        alert(status);
    },
    'complete': function (xhr) {
    }
});

在我的MVC控制器中:

public ActionResult WebService(string authorizedId, string authorizedUser, string authorizedCode)
{
        XmlDocument document = new XmlDocument();
        document.Load("http://mywebservice.com/WebService/Service.asmx/UserData?authorizedId=" + authorizedId + "&authorizedUser=" + authorizedUser + "&authorizedCode=" + authorizedCode);
        ViewData["XMLData"] = document.OuterXml;
        return PartialView();
}