我使用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
。
答案 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);