Javascript jQuery ajax返回readyState 1或数据类型不正确
我为Wordpress插件编写脚本,但ajax响应有问题。当我想要获取json文件时,jQuery.ajax返回Javascript jQuery ajax返回readyState 1或数据类型不正确,javascript,jquery,ajax,json,wordpress,Javascript,Jquery,Ajax,Json,Wordpress,我为Wordpress插件编写脚本,但ajax响应有问题。当我想要获取json文件时,jQuery.ajax返回{readyState:1}。 jQuery.ajax withasync:false返回纯文本,尽管我有数据类型:“json” App.Language = { GetLanguageFile: function(lang) { var LangFile = GetJsonLanguageFile(lang); return LangFile
{readyState:1}
。
jQuery.ajax withasync:false
返回纯文本,尽管我有数据类型:“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文件的纯文本结果,但我无法获取这个键值;当函数为async时,返回的是object,我可以获取结果,但它是纯文本,尽管我有数据类型:“json”
我做错了什么?如何从这个json文件内容中生成普通对象?Ajax调用返回承诺,因此您必须使用
done
方法处理结果,例如:
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;
});
当
async
为false时,您不会得到一个jQXHR对象作为$。ajax return
,这就是您的意思吗?不,当async为false时,函数返回对象具有正确的responseText。我不想用async falseOk得到这个结果,现在用async false,$.ajax返回json对象。我不得不改成“在json文件中,但如果没有async False,仍然无法工作,因为您无法返回它,如果您想将它从函数体外部获取,则必须将其绑定到全局变量,例如使用window.json=data代码>但是,您应该在函数体内部完成所有工作。这实际上是AJAX包装器的一个很好的候选者,即使不需要弃用asycn:false
谢谢,喜欢它