Ajax查询适用于dataType:' text'使用dataType失败:' text / xml;字符集= UTF-8'

时间:2015-11-07 01:25:10

标签: ajax xml xml-parsing

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

  1. xml响应有效xml
  2. 响应标题显示内容类型为' text / xml; 字符集= UTF-8'
  3. 这不是跨域请求
  4. 这三个问题是其他parsererror问题的答案。

    我的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>
    

    &#39;文本&#39;很棒。请求工作...但让Ajax为我解析xml会很高兴。关于如何使其发挥作用的任何想法?

2 个答案:

答案 0 :(得分:5)

查看http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings - dataType&#34; xml&#34;得到支持。

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

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

答案 1 :(得分:1)

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