我为 WordPress 插件编写脚本,但 ajax 响应有问题。当我想要获取 json 文件时,jQuery.ajax 返回{readyState: 1}
。
jQuery.ajax 与async: false
返回纯文本,尽管我有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文件的纯文本结果,但我无法获取此键值,并且当函数是异步时,返回的是对象,我可以获得结果,但它是纯文本,虽然我有数据类型:'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;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)