jQuery ajax返回readyState 1或不正确的数据类型 [英] jQuery ajax return readyState 1 or incorrect data type
问题描述
我为Wordpress插件编写了脚本,而ajax响应出现了问题.当我想获取json文件时,jQuery.ajax返回{readyState: 1}
.
带有async: false
的jQuery.ajax返回纯文本,尽管我有dataType: 'json'
.
I write script for Wordpress plugin and have problem with ajax response. When i want get json file, jQuery.ajax return {readyState: 1}
.
jQuery.ajax with async: false
return plain text although I have 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'.
When function returned readyState: 1, in console I have object with key "responseText" and plain text result from json file but I can't get this key value, and when function is async, returned is object and I can get result but it's a plain text, although i have dataType: 'json'.
我做错了什么?如何从此json文件内容制作普通对象?
What I do wrong? How to make normal object from this json file content?
推荐答案
Ajax调用返回promise,因此您必须使用done
方法处理结果,例如:
Ajax call returns promise so you have to use done
menthod to work with result, for example:
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;
});
这篇关于jQuery ajax返回readyState 1或不正确的数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!