我发一个ajax POST请求将JSON数据发布到服务器,我得到一个简单的文本响应。我可以看到一切正常,因为它显示在浏览器的调试器中。但是,我不能使用它。
callajax1(Callback);
function callajax1(callbackfn) {
$.ajax({
type: "POST",
url: myUrl,
data: JSON.stringify({ Data: data }),
contentType: "text/plain; charset=utf-8",
dataType: "json",
success: function (data2) {
callbackfn(data2);
},
failure: function (errMsg) {
}
});
return false;
}
function Callback(data) {
alert(data);
}
没有显示任何警告。
答案 0 :(得分:5)
你说你得到了一个“简单的文本回复”,但是你的JavaScript(dataType: "json"
)说要忽略响应的内容类型并将其解析为JSON。
也许(因为您发送JSON并声称它是纯文本),您会混淆dataType
(覆盖服务器返回的内容类型)和contentType
(描述您要发送的数据)。< / p>
如果响应是“简单文本”而不是JSON,那么您无法将其解析为JSON。要么返回JSON,要么使用dataType: 'text'
。
答案 1 :(得分:1)
dataType告诉jQuery解析给定dataType的结果,默认为'text',尽管jQuery足够智能以检测需要哪个转换。
答案 2 :(得分:0)
你可以在这里看到答案:
http://jsfiddle.net/justtal/x9re9/
function callajax1(callbackfn) {
$.ajax({
type: "GET",
url: 'https://gdata.youtube.com/feeds/api/videos',
/*data: JSON.stringify({ Data: data }),*/
/*contentType: "text/plain; charset=utf-8",*/
/*dataType: "json",*/
success: function (data2) {
callbackfn(data2);
},
failure: function (errMsg) {
callbackfn(errMsg);
}
});
return false;
}
var Callback = function (data) {
alert(data);
}
callajax1(Callback);