【问题标题】:How to Change it to an array如何将其更改为数组
【发布时间】:2012-12-25 13:26:28
【问题描述】:

我使用 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

【问题讨论】:

  • 您可以使用eval。如果可以编辑php文件,或者输出更好的格式。

标签: jquery ajax


【解决方案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
);

【讨论】:

  • @AzWadehra 有用吗?如果是,请尝试选择其中一个答案:)
  • 没有上面的评论是我的代码是这样的,它不是我的问题的解决方案/:)
【解决方案2】:

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

v1=eval(data);

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

【讨论】:

    【解决方案3】:

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

    JSON.parse(v1);
    

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

    【讨论】:

    • JSON.parse 我认为不会接受单引号中的字符串
    【解决方案4】:

    使用这个..

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

    【讨论】:

      【解决方案5】:

      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);
      

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

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

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

      【讨论】:

      • 我尝试将上面转换为 jason 解析格式,但不起作用我要求它从 php 获取数据 [['12-25-2012',62],['12-26- 2012',60]] 会这样显示 - 12-25-2012,62,12-26-2012,60 //
      • 我认为您需要指定所需的输出。你想要一个逗号分隔的字符串并摆脱数组吗?你想让数字保持数字等吗?
      • k 实际上我使用 jqplot 插件生成图形并从数据库中获取数据,它需要 v2 变量中所示格式的数据,但我得到的格式为 v1 我想将 v1 格式更改为 v2 你可以去这里查看 jqplot 格式的一个示例jqplot.com/docs/files/usage-txt.html
      • 这将是非常基本的(并且与您的实际问题无关):jsfiddle.net/FPLcF
      • 那行不通你可以试试自己去这里jsfiddle.net/45nDy/2你可以将line1更改为输出然后当你使用line1它形成图形时不会生成图形
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      相关资源
      最近更新 更多