【问题标题】:Ajax query works with dataType:'text' fails with dataType:'text/xml; charset=utf-8'Ajax 查询与 dataType:'text' 一起使用失败 dataType:'text/xml;字符集=utf-8'
【发布时间】:2016-02-08 06:25:38
【问题描述】:

当我尝试使用 'text/xml; 的 dataType 进行 Ajax 查询时; charset=utf-8'... 我得到一个解析器错误。

  1. xml 响应是有效的 xml
  2. 响应标头显示 Content-Type 为 'text/xml; charset=utf-8'。
  3. 不是跨域请求

这三个问题是其他解析器错误问题的答案。

我的 ajax 看起来像这样:

        $('#submitLogin2').click(function (e) {
            e.preventDefault();
            var formData = $('#loginForm2').serialize();
            var url = 'http://somewhere.com/Api2.0/Session_Create.aspx';
            $.ajax({
                url: url, type: "POST", dataType: 'text/xml; charset=utf-8',
                data: formData, contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
                success: function (data) {
                    $('#loginResult').html(data.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/ /g, '&nbsp;').replace(/\n/g, '<br />'));
                },
                error: function (textStatus, errorThrown) {
                    alert(errorThrown);
                    alert(JSON.stringify(textStatus));
                }
            });
        });

响应是:

<Response><Error code='0'>Invalid User Name or Password</Error></Response>

'text' 请求工作很好......但是让 Ajax 为我解析 xml 会很好。关于如何让它发挥作用的任何想法?

【问题讨论】:

    标签: ajax xml xml-parsing


    【解决方案1】:

    查看http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings - 支持数据类型“xml”。

    将您的查询更改为以下应该会给您预期的结果:

    url: url, type: "POST", dataType: 'xml',
    

    【讨论】:

    • 奇怪的是有多少样本有'text/xml'...但是'xml'本身就可以工作...谢谢!
    【解决方案2】:

    您还必须解析 XML 响应以将其作为字符串处理,例如 $.parseXML(data) 或 XMLSerializer。我认为这更重要,因此响应数据类型应该由 MIME 类型自动确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 2012-11-18
      • 2013-07-29
      相关资源
      最近更新 更多