繁体   English   中英

没有调用jQuery.ajax转换器

[英]jQuery.ajax converter not called

我遇到了jQuery.ajax转换器的问题 - 我无法调用我的转换器。

我有这个jQuery AJAX代码(简化问题):

    $.ajax({
    url: "http://myurl/myservice",
    dataType: "JSONP",
    cache: false,
    success: function (data, textStatus, jqXHR) { /* do stuff */ },
    error: function (jqXHR, textStatus, errorThrown) { /* do stuff */ },
    timeout: 5000,
    converters: { "JSONP": myConversionFunction }
});

当我使用这段代码时,没有调用转换器函数myConversionFunction 我想使用转换器来转换响应中的日期,如同在其他SO问题中显示但是无法解决它。

使用fiddler我已经检查了响应,它是JSONP,内容类型为“application / x-javascript”。

我有什么想法我做错了吗?

谢谢,克里斯。

我认为你不能覆盖像json这样的jQuery默认转换器。 引入您自己的转换器(并在您的说明符中包含text ,因为在这种情况下,它是从文本到输出的转换):

$.ajax({
    url: "http://myurl/myservice",
    dataType: "jsonp myConversion",
    cache: false,
    success: function (data, textStatus, jqXHR) { /* do stuff */ },
    error: function (jqXHR, textStatus, errorThrown) { /* do stuff */ },
    timeout: 5000,
    converters: {
        "text myConversion": function(value) {
            console.log("pre-processing...");
            /* do stuff */
            return value;
        }
    }
});

我使用这样的代码来管理asp.net的'd'数据:

$.ajaxSetup({
    data: "{}",
    dataType: "jsonp",
    type: "POST",
    contentType: "application/json",
    converters:
        {
            "json jsonp": function(msg)
            {
                return msg.hasOwnProperty('d') ? msg.d : msg;
            }
        },
    error: function(xhr, textStatus, errorThrown)
    {
        var errorMessage = "Ajax error: " + this.url + " : " + textStatus + " : " + errorThrown + " : " + xhr.statusText +
                " : " + xhr.status;
        if (xhr.status != "0" || errorThrown != "abort")
        {
            alert(errorMessage);
        }
    }
});

也许你需要把它做成小写,如:

converters:
    {
        "json jsonp": function(msg)
        {
            return yourfunction(msg);
         }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM