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