从Javascript中的多维PHP数组中获取值

时间:2013-08-14 15:22:47

标签: php javascript mysql ajax

这是我的情况:

我有一个包含2个字段的MYSQL数据库:'ID''string'。 'string'字段以序列化数组的形式存储字符串。因此,为了将其解压缩,我使用这个PHP代码:

$rez=mysql_query("SELECT * FROM drawings") or die(mysql_error());

$array=array();

while($row=mysql_fetch_array($rez))
{
    $array[]=unserialize($row['string']);
}

现在我的$ array变量应该包含一个数组数组,对吧?假设我做得正确,那么我echo $array;所以我的ajax调用会在return_data中捕获它,如下所示:

var return_data = hr.responseText;

为了测试我是否可以提取值,然后尝试实现以下代码,但它似乎不起作用:

var arr = return_data.split(",");
var sub_arr = arr[0].split(",");
alert(sub_arr[0]);

我做错了什么?

其他信息:

我基本上在MYSQL数据库中存储了一堆坐标,每一行都是一个单独的坐标数组,例如(12,13,14,16,17,20) - 这些是3个“点”包含在一排。

然后我使用ajax调用以数组的形式从数据库中提取所有记录,该数组包含多个数字的数组(我知道每两个相邻的数字组成一个点)。

编辑:

chrome javascript控制台输出:

'undefined'的事件处理程序出错:无法读取未定义的属性'disable_serps_pos_numbers'TypeError:无法读取未定义的属性'disable_serps_pos_numbers'     在BasePlugin.GooglePlugin.getSomeCorePrefs(chrome-extension://akdgnmcogleenhbclghghlkkdndkjdjc/content_scripts/google.js:129:48)     在chrome-extension://akdgnmcogleenhbclghghlkkdndkjdjc/lib/lib.js:44:25     在miscellaneous_bindings:287:9     在Event.dispatchToListener(event_bindings:356:21)     在Event.dispatch_(event_bindings:342:27)     在Event.dispatch(event_bindings:362:17)     at Object.chromeHidden.Port.dispatchOnMessage(miscellaneous_bindings:253:22)

3 个答案:

答案 0 :(得分:3)

while($row=mysql_fetch_array($rez))
{
    $array[]=unserialize($row['string']);
}

echo json_encode($array);

然后在Javascript代码中(假设jQuery):

$.parseJSON(return_data)

然后你可以像Javascript中的2D数组一样使用它。

答案 1 :(得分:1)

使用jQuery和PHP附带的标准函数将数组转换为JSON数据并返回到数组。

与PHP中的json_encode()和json_decode()类似

和JS:Parse JSON in JavaScript?

答案 2 :(得分:0)

首先,我强烈建议您切换到使用PDO进行SQL查询,但要回答您的问题,您说您正在做:

echo $ array;

这将导致数组转换为字符串错误。

我建议使用echo json_encode($ array);这会将数组转换为json对象。

http://php.net/manual/en/function.json-encode.php