0

当我将 php 数组传递给 jquery

$testArr = array('a','b','c');
echo json_encode($testArr);

jQuery脚本

$.post(
    "http://localhost/xiuno",
    {useranswers:arr,shijuanid:shijuanid},
    function(data){
        alert(data[0]);
    }

它什么都没有显示,那么,如何使用索引访问数据?

还有一件事让我很困惑,我改为alert(data[0]);显示alert(data);["a","b","c"]它既不是 JSON 类型,也不["0":"a","1":"b","2":"c"]是数组,因为它不能通过索引访问,那么,从 PHP 脚本中检索到的数据到底是什么?它应该是 JSON,但不是。

另外,我想知道有没有办法直接从 PHP 传递数组,下面的代码不起作用

$testArr = array('a','b','c');
echo $testArr;

因为一个数组不能回显,那怎么办呢?

4

3 回答 3

1

输出["a","b","c"]是正确的。这就是数组在 JSON 中的表示方式(["0":"a","1":"b","2":"c"]完全无效)。

这也意味着这data是一个字符串,您必须先将 JSON 解析为 JavaScript 数组:

data = $.parseJSON(data);
alert(data[0]);

如果不这样做,data[0]将访问字符串的第一个字符[.

从 PHP 脚本中检索到的数据到底是什么?

JSON,它是一种文本数据交换格式,就像 XML、CSV 或 YAML 一样。这是一种对数据进行编码的方法。为了访问数据,必须首先将其转换为本机数据类型。这就是你所做的$.parseJSON。它接受一个包含 JSON 的字符串并返回一个对象或数组。

我想知道有没有办法直接从 PHP 传递数组

不,那里没有。PHP数组是一种只有PHP才能理解的数据结构。为了将数据传递给另一个系统/程序/等,您首先必须以对方理解的方式对数据进行编码。JSON 是一个不错的选择。

于 2013-06-29T15:37:10.453 回答
0

PHP 函数 json_encode() 返回一串 JSON 格式的文本。当您在 JavaScript 代码中收到此字符串时,应首先将其解析回对象。

将 JSON 解析为 JS 代码是这样的

//The JS way:    
data = JSON.parse(json);

//The jQuery way:
data = $.parseJSON(data);

来自:在 JavaScript 中解析 JSON?

我希望这对你有用。

于 2013-06-29T15:39:19.920 回答
0

你可以使用 JSON.parse

var jsonData = JSON.parse(data)

于 2013-06-29T15:40:55.287 回答