jQuery ajax返回readyState 1或不正确的数据类型 [英] jQuery ajax return readyState 1 or incorrect data type

查看:224
本文介绍了jQuery ajax返回readyState 1或不正确的数据类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆