jQuery dataFilter响应未定义

时间:2012-02-28 08:14:32

标签: jquery ajax jsonp

我通过jsonp使用jQuery.ajax()从外部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函数预处理我的错误处理响应。但是这个函数的响应参数总是未定义的。但是,在成功函数中,我得到了正确的响应数据。

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

1 个答案:

答案 0 :(得分:1)

我可以验证这个问题是一个痛苦的屁股。需要做的是使用$ .ajaxSetup({});以及转换器:

<强> $。ajaxSetup

  

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

然后,您需要使用转换器来处理dataType,dataFilters,回调和解析。

jQuery.Extensions - 转换器

  

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

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

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

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