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

我为Wordpress插件编写脚本,并且遇到ajax响应问题。 当我想要获取json文件时,jQuery.ajax返回{readyState: 1} 。 jQuery.ajax with 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文件的纯文本结果但我无法得到这个键值,当函数是异步时,返回的是对象,我可以得到结果但它是一个纯文本,虽然我有dataType:’json’。

我做错了什么? 如何从这个json文件内容制作普通对象?

Ajax调用返回promise,所以你必须使用done menthod来处理result,例如:

  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; });