JQuery ajaxSubmit响应始终为小写

时间:2014-01-09 15:55:50

标签: javascript jquery

我正在对Web服务进行ajaxSubmit调用,它将返回XML。

当我使用XMLHttpRequest.send调用同一服务时,响应是正确的。 但是,如果我使用:

$(form).ajaxSubmit({
        error: function _(response) {
            $(iframeEl).remove();
            config.error.call(scope, Thunderhead.util.JSON.decode(response));
        },
        success: function _(response) {
            console.log(response);
            $(iframeEl).remove();
            var result = response;
            config.success.call(scope, result);
        },
        iframe: true
    });

这将返回正确的XML响应,但所有标记都已转换为小写。

我已经在开发者控制台的“网络”选项卡中检查了调用,并且案例在那里是正确的,但是当ajaxSubmit返回时,它是小写的。

有谁知道造成这种情况的原因或如何纠正它?

3 个答案:

答案 0 :(得分:1)

您使用的是Malsups jQuery form plugin

吗?

这个插件做了很多toLowerCase转换,我看起来并不太紧,但似乎小写了某些东西的标签名称,所以这可能是你的罪魁祸首。

我建议您使用简单的jQuery.ajax()调用重构

$(form).on('submit', function(e) {
    var url = $(form).attr('action');
    e.preventDefault();
    $.ajax( url, {
    error: function _(jqXHResponse) {
        // your code
    },
    success: function _(response) {
        console.log(response);
        // your code
    }
});

答案 1 :(得分:0)

这可能会发生,因为js假设xml作为答案。大多数xml-parsers没有区别,在xml标记名称中使用了这种情况。

我建议尝试更改响应数据类型。

例如,jQuery.ajax方法中有这样的选项:http://api.jquery.com/jquery.ajax/(名为dataType)。如果案例非常重要,我会尝试使用“text”dataType。

答案 2 :(得分:-1)

最后还会出现一些问题,所以只要发布我的最终解决方案以防其他人遇到此问题。我对javascript很新,所以对大多数人来说这可能是显而易见的,但它可能会帮助其他人。

成功回调实际上可以接受3个参数,其中第三个参数(arg2)是来自请求的实际响应,而没有来自Malsups表单插件的任何更改。

所以最后,解决方案只是使用第三个参数而不是响应参数。

$(form).ajaxSubmit({
    error: function _(response) {
        $(iframeEl).remove();
        config.error.call(scope, Thunderhead.util.JSON.decode(response));
    },
    success: function _(response, arg1, arg2) {
        console.log(response);
        $(iframeEl).remove();
        var result = response;
        config.success.call(scope, arg2.responseXML);
    },
    iframe: true
});