我通过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函数预处理我的错误处理响应。但是这个函数的响应参数总是未定义的。但是,在成功函数中,我得到了正确的响应数据。
你知道可能是什么问题吗?
答案 0 :(得分:1)
我可以验证这个问题是一个痛苦的屁股。需要做的是使用$ .ajaxSetup({});以及转换器:
<强> $。ajaxSetup 强>
然后,您需要使用转换器来处理dataType,dataFilters,回调和解析。
jQuery.Extensions - 转换器
虽然你没有 通过$ .ajaxSetup使用转换器 -
$.ajax({ converters: 'params go here' });
由于您正面临的情况,所有作为jsonp传递的数据都需要将此转换器应用于它。这应该根据您的预期结果类型和需求为您提供更实际的控制。