jQuery $.getJSON 不返回键值对

Posted

技术标签:

【中文标题】jQuery $.getJSON 不返回键值对【英文标题】:jQuery $.getJSON does not return key and value pairs 【发布时间】:2014-05-19 15:54:08 【问题描述】:

我有一个 js 文件。在这个文件中,我试图从服务器端 getjSON 数据。从服务端返回的json是

"STATUS":"TRUE","DEVICE_KEY":"80147459","ERROR_MESSAGE":""

下面的脚本不返回任何警报。我究竟做错了什么? (我检查了是否加载了jQuery和jQueryMobile。没有问题)

相同的脚本在我的本地机器上工作,但在远程服务器上不工作。这可能是 apache 或 php 设置问题吗?

谢谢

$(window).load(function () 
    $.getJSON("http://.... myfile.php", function (data) 
        $.each(data, function (k, v) 
            alert("key: " + k + "  val:" + v);
        )
    );
);

【问题讨论】:

可能是跨域ajax $.getJSON 函数可能返回错误? [试试这个问题][1]。 [1]:***.com/questions/1740218/… 你不能使用简单的字符串吗?一个。键值,然后拆分它:) 我的本地主机上存在相同的 php。该脚本适用于我的本地计算机,但不适用于远程服务器。是否有我缺少的服务器设置? Dieter 这个是最简单的样本。我有更复杂的样本 :) 问题是,它在远程服务器上根本不起作用。我必须更改任何 php 或 apache 设置吗? 【参考方案1】:

问题是跨域问题。

我使用了 jsonp 并且它有效.. 见 http://json-p.org/

【讨论】:

【参考方案2】:

我认为你没有解析它。

JSON 只是一个 javascript 对象表示法,它是一个字符串。您必须对其进行解析才能将其转换为对象。

这样做:

$(window).load(function () 
    $.getJSON("http://.... myfile.php", function (data) 
        data = JSON.parse(data); // add this line
        $.each(data, function (k, v) 
            alert("key: " + k + "  val:" + v);
        )
    );
);

【讨论】:

以上是关于jQuery $.getJSON 不返回键值对的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery SerializeArray() 获取 JSON 键值对

JQuery中Ajax的基本用法

数组实例的 entries(),keys() 和 values()

Jquery中$.get(),$.post(),$.load(),$.ajax(),$.getJSON(),$.getScript()的用法总结

Spark入门--Spark的combineByKeysortBykey

不使用 Object.entries() 返回键值对数组的数组