1

我使用 jQuery$.post从 php[from 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]];

不是作为字符串。

为了更清楚,您可以通过 alert v1 & v2 来理解

当你提醒v2你得到12-25-2012,62,12-26-2012,60 当你提醒v1你得到[['12-25-2012',62],['12-26-2012',60]]

有区别,我想v1看起来像v2

4

5 回答 5

1

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

让 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
);
于 2012-12-25T13:50:47.490 回答
0

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

JSON.parse(v1);

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

于 2012-12-25T13:33:15.390 回答
0

AJAX 只能传输字符串,因此您必须自己处理转换(在 PHP 中转换为字符串并返回到 JS 中的实际数据)(这意味着您不能像示例中那样传递数据:)data = [['12-25-2012',62],['12-26-2012',60]]。AJAX 调用中最常用的格式是 JSON。然而,JSON 仅使用双引号,因此您尝试传入的数据被视为无效。

我建议您对数据使用正确的 JSON 格式(使用双引号),以便您可以JSON.parse用于这项工作,但如果您对数据的格式感到困惑,您将不得不亲自动手并使用类似的东西一个函数构造函数(或者,更糟糕的使用eval):

var v1 = "[['12-25-2012',62],['12-26-2012',60]]"
var a = new Function("return " + v1); //constructs a new function from the given string, in this case returning the passed array
var data = a();

console.log(data);

在 MDN阅读有关在 JavaScript 中使用 JSON以及为什么不应该使用 eval之类的内容。

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

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

于 2012-12-25T13:39:49.413 回答
0

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

v1=eval(data);

请注意eval() 是邪恶的。另外我强烈建议您更改 php 代码以其他格式发送它,然后您可以将它们附加到 javascript 数组中。

于 2012-12-25T13:43:35.813 回答
0

用这个 ..

    var x= eval(v1);
     alert(x);
于 2012-12-25T13:50:34.267 回答