如何将其更改为数组

时间:2012-12-25 13:26:29

标签: jquery ajax

我使用jQuery的$.post从php [来自mysql]文件数据中获取数据,我们得到的结果如下:

data = [['12-25-2012',62],['12-26-2012',60]]

当我将此分配给变量时,它将存储为字符串:

v1 = "[['12-25-2012',62],['12-26-2012',60]]"; [v1 = data]

但我要求它这样:

v2 = [['12-25-2012',62],['12-26-2012',60]];

不是字符串。

为了更清楚,您可以通过警报v1& V2

当您提醒v2时,您获得了12-25-2012,62,12-26-2012,60 当您提醒v1时,您会收到[['12-25-2012',62],['12-26-2012',60]]

有区别,我希望v1看起来像v2

5 个答案:

答案 0 :(得分:1)

根据$.post

的文档,尝试指定您希望在jQuery $.post函数中获得的数据类型

让php回复这个

$data = "[['12-25-2012',62],['12-26-2012',60]]";
exit(0);

$.post("test.php", { name: "John", time: "2pm" },
 function(data) {
   process(data);
 }, 
 "JSON" //this will tell your calling post that the return data is to be considered JSON
);

答案 1 :(得分:0)

使用$.ajax并将JSON设置为预期的响应类型或解析字符串

JSON.parse(v1);

正如@ m90指出的那样,单引号在JSON中无效。我错过了。在解析字符串之前,您必须更改php文件以响应正确的JSON或用双引号替换单引号。

答案 2 :(得分:0)

AJAX只能传输字符串,所以你必须自己处理转换(到PHP中的字符串并回到JS中的实际数据)(这意味着你不能像你的例子那样传递数据:{{1 }})。 AJAX调用中最常用的格式是JSON。然而,JSON仅使用双引号,因此您尝试传入的数据被视为无效。

我建议你为你的数据使用正确的JSON格式(使用双引号),以便你可以使用data = [['12-25-2012',62],['12-26-2012',60]]来完成这项工作,但是如果你遇到数据格式,你将不得不弄脏你的手并使用像函数构造函数这样的东西(或者更糟糕的是使用JSON.parse):

eval

了解 using JSON in JavaScript at MDN why you shouldn't be using eval 等。

PHP还有一个非常方便的json_encode方法,您可以传递一个数组,它将自动转换为有效的JSON。

如果您只需要一个由逗号分隔对组成的简单字符串,为什么不在PHP中生成它并将其传递给这样的JavaScript?

答案 3 :(得分:0)

也许你可以试试这个,虽然不确定它会起作用:

v1=eval(data);

请注意eval() is evil。此外,我强烈建议,你改变PHP代码以其他格式发送它然后你可以将它们附加到javascript数组。

答案 4 :(得分:0)

使用此.. ..

    var x= eval(v1);
     alert(x);