【问题标题】:creating 2D javascript array from ajax php call从 ajax php 调用创建 2D javascript 数组
【发布时间】:2013-10-03 17:55:42
【问题描述】:

我有一个mysql表,里面有图片数据。

我想检索图像数据并推入一个 javascript 数组。

我想将两个字段放入数组中,它们是 image_ref 和 image_name 我知道我需要一个二维数组,我需要使用 ajax 和 JSON 从数据库中检索数据。

我不知道如何完成。

我知道我需要使用 JSON ajax 调用来调用 php 页面

js:

var imagesArray[];

$.getJSON("get_image_data.php")
    .done(function(data) { 
  /*THIS IS WHERE I NEED HELP---*/
});         

get_image_data.php 页面

include("connect.php"); 
$query = mysql_query("SELECT * FROM images WHERE live='1' ORDER BY insertDate DESC");
while($row=mysql_fetch_array($query){
     echo json_encode(array("a" => $row['image_ref'], "b" => $row['image_name'])); 
}

我已经强调了在将返回的数据放入 stockImages 数组时需要帮助的地方。

谁能给我看灯?

提前致谢

【问题讨论】:

  • 为什么要将它们放在二维数组中?一维对象数组更清晰,而 JSON 让您可以轻松做到这一点。
  • 我需要一个二维数组,因为每个图像有两个字段,因此数组将是 imagesArray[0][0] 等我需要用于在页面上显示图像的 image_name 和用于显示图像的 image_ref将其引用回数据库以进行任何更改,即如果我删除图像,则需要更改“实时”字段,我将使用 image_ref 来执行此操作,因为上传的用户图像可以具有相同的名称
  • 您不需要二维数组,因为对象本身就是某种数组,其中字符串用作索引。而且你的 PHP 代码是错误的。你不能结合关联数组和 fetch_array()。我建议您在使用语言和提问之前学习语言并阅读文档。
  • 在没有老师的情况下我应该如何学习并且从这里获得建议就像我在帖子中所说的那样寻求老师,我需要帮助
  • 网上有大量的 AJAX、MySQL 和 JSON 教程。

标签: javascript php ajax json multidimensional-array


【解决方案1】:

其实是PHP错了,因为在JS上你会直接在“data”中找到你需要的数组。

您的 PHP 代码应如下所示:

$query = mysql_query("SELECT * FROM images WHERE live='1' ORDER BY insertDate DESC");
$result = array();
while($row=mysql_fetch_array($query){
    $result[] = array("a" => $row['image_ref'], "b" => $row['image_name']); 
}
echo(json_encode($result));

【讨论】:

  • @Katran 我已更改 php 以匹配您的,但我的 javascript $.getJSON("get_image_data.php").done(function(data) { stockImagesArray=data; } );它错误地说—— TypeError: $.getJSON(...).done is not a function @...
【解决方案2】:

通过在循环中多次调用json_encode(),您正在创建大量的 JSON 单数位。您应该以创建和传输一个传输对象为目标,如下所示:

include("connect.php"); 
$query = mysql_query("SELECT * FROM images WHERE live='1' ORDER BY insertDate DESC");
$images = array(); 
while($row=mysql_fetch_array($query){
    $images[] = array("a" => $row['image_ref'], "b" => $row['image_name']); 
}
echo json_encode($images);

这将为您提供一个 JSON 数组,您可以通过该数组在客户端 Javascript 中循环。

【讨论】:

  • 当我用你更新的 php 运行代码时,我会提醒返回的数据,它回显为 data=[object,Object][object,Object] 你能告诉我为什么这样做
  • 是的,没关系。您将获得一个 Javascript 对象作为返回 - 请记住 JSON 表示 Javascript OBJECT 表示法。使用上面的术语“数组”可能是错误的。为了正确检查数据变量,请使用 Firebug 和 console.log(data) 之类的工具,而不是 alert(data)
  • chrome 中的控制台返回 [Object, Object] 0:对象 1:对象长度:2 在 Firefox 中控制台不记录任何内容。我如何使用数据在页面上创建图像,因为当我这样做时
  • 啊,经过一个星期的挠头,我终于明白了。要使用 json 对象,我必须调用 'array[0].b' 或 'array[0].b'
猜你喜欢
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多