【问题标题】:PHP array to jquery array via JSONPHP数组通过JSON到jquery数组
【发布时间】:2012-04-13 15:05:18
【问题描述】:

我有点困惑,为什么以下内容不起作用。

get.php

<?php

$username="root";
$password="root";
$database="testing";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$name= $_GET['name'];

$query="SELECT * FROM tableone ";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

$array = array();

$i=0;
while ($i < $num) {

    $first=mysql_result($result,$i,"firstname");
    $last=mysql_result($result,$i,"lastname");
    $date=mysql_result($result,$i,"date");
    $ID=mysql_result($result,$i,"id");

    $array[] = $first;

    $i++;
}

echo json_encode($array);

?>

jQuery

var arr = new Array();

    $.get("get.php", function(data){
         arr = data;
         alert(arr);
    }, "json");

当我运行以下命令时,我会得到一个看起来像这样的名称列表

["James","Lydia","John"]

但是当我尝试挑出诸如 arr[2] 之类的条目时,我只给出了一个“J”,为什么这些元素会像我所期望的那样不是单个条目?

有人可以帮忙吗?

谢谢!

更新

$.get("get.php", function(data){

     arr = $.parseJSON(data);
     alert(arr);
}, "json");

好像没有返回结果?

【问题讨论】:

  • 数据似乎还没有解析为 JavaScript 数组,arr 仍然是一个字符串。否则,alert(arr) 将输出 James, Lydia, John
  • 附带说明 - var arr = new Array(); 没有做任何事情,因为无论如何你都会为该变量分配另一个值。

标签: php jquery json


【解决方案1】:

data 包含 JSON 字符串,因此 arr[2] 将是字符串中的第三个字符。您需要使用$.parseJSON(data)

【讨论】:

  • 那么问题是为什么传递数据类型参数不起作用?
  • 在这种情况下我会如何使用它? arr = ($.parseJSON(data));
  • 是的,没错。不过,不需要包装器:arr = $.parseJSON(data);
  • 嗯,好像不行,你看看问题中的更新代码好吗?
【解决方案2】:

您的 PHP 声称 JSON 是 HTML。你需要明确地说它是 JSON 才能让 jQuery 自动处理它。

header("Content-type: application/json");

【讨论】:

  • 如果提供了数据类型参数,它不应该工作吗?
【解决方案3】:

通过header('Content-type: application/json'); 发送 php 中的 json 标头,以便 jQuery 自动解码您的 json 数据。

【讨论】:

    【解决方案4】:

    您不能将数据值赋予数组。

     $.get("get.php", function(data){
         alert(data[2]);
    }, "json");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      相关资源
      最近更新 更多