【问题标题】:jQuery dataFilter response undefinedjQuery dataFilter 响应未定义
【发布时间】:2012-02-28 16:33:41
【问题描述】:

我正在使用 jQuery.ajax() 通过 jsonp 从外部 api 获取数据。

这是我的 ajax 设置:

var ajax_options = {
    dataType: 'jsonp',
    jsonp: 'callback',
    url: url,
    data: parameters,
    success: function (response) {
        console.log(response); // works, prints the correct data
    },
    dataFilter: function (response, type) {
        console.log(response); // prints undefined
        console.log(type); //prints "jsonp"
    }
};
$.ajax(ajax_options);

我想使用 dataFilter 函数来预处理我的响应以进行错误处理。但是这个函数的响应参数总是未定义的。然而,在成功函数中,我得到了正确的响应数据。

你知道可能是什么问题吗?

【问题讨论】:

  • 我不熟悉下面提到的转换器,但是 jQuery ajax 页面:api.jquery.com/jQuery.ajax 说:“某些类型的 Ajax 请求,例如 JSONP 和跨域 GET 请求,不使用 XHR ; 在这些情况下,传递给回调的 XMLHttpRequest 和 textStatus 参数是未定义的"

标签: jquery ajax jsonp


【解决方案1】:

我可以确认这个问题很麻烦。需要做的是使用 $.ajaxSetup({});连同转换器:

$.ajaxSetup

http://api.jquery.com/jQuery.ajaxSetup/

然后,您需要使用转换器来处理您的数据类型、数据过滤器、回调和解析。

jQuery.Extensions - 转换器

http://api.jquery.com/extending-ajax/#Converters

虽然你没有通过 $.ajaxSetup 使用转换器 -

$.ajax({ converters: 'params go here' });

由于您面临的情况,所有作为 jsonp 传递的数据都需要应用此转换器。这应该会根据您的预期结果类型和需求为您提供更现实的控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2021-06-21
    • 2021-05-26
    • 2019-01-20
    • 2021-10-28
    • 2014-12-30
    • 2012-06-09
    相关资源
    最近更新 更多