Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery ajax返回readyState 1或数据类型不正确_Javascript_Jquery_Ajax_Json_Wordpress - Fatal编程技术网

Javascript jQuery ajax返回readyState 1或数据类型不正确

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

我为Wordpress插件编写脚本,但ajax响应有问题。当我想要获取json文件时,jQuery.ajax返回
{readyState:1}
。 jQuery.ajax with
async: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
谢谢,喜欢它