我遇到了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”。
任何想法我做错了什么?
谢谢, 克里斯。
答案 0 :(得分:7)
我认为你不能覆盖jQuery的默认转换器,如json
。引入您自己的转换器(并在您的说明符中包含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;
}
}
});
答案 1 :(得分:1)
我使用这样的代码来管理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);
}
}