我为Wordpress插件编写脚本,并且遇到ajax响应问题。当我想要获取json文件时,jQuery.ajax返回{readyState: 1}
。
带有async: false
的jQuery.ajax返回纯文本,但我有dataType: 'json'
。
App.Language = {
GetLanguageFile: function(lang) {
var LangFile = GetJsonLanguageFile(lang);
return LangFile;
},
}
function GetJsonLanguageFile(lang) {
var json = $.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
// async: false,
data: {action:'adminajax',method:'GetJsonLanguageFile',language: lang},
})
return json;
}
当函数返回readyState:1时,在控制台中我有一个带有键“responseText”的对象和来自json文件的纯文本结果但是我无法得到这个键值,当函数是异步时,返回的是对象,我可以得到结果,但它是一个纯文本,虽然我有dataType:'json'。
我做错了什么?如何从这个json文件内容制作普通对象?
答案 0 :(得分:3)
Ajax调用返回promise,因此您必须使用done
menthod来处理结果,例如:
function GetJsonLanguageFile(url, lang) {
return $.ajax({
url: url,
type: 'POST',
dataType: 'json',
// async: false,
data: {action:'adminajax',method:'GetJsonLanguageFile',language: lang},
});
}
GetJsonLanguageFile('some.url', lang).done(function(data) {
// if it returns string insted of JSON try it:
data = $.parseJSON(data);
// do rest
// window.json = data;
});