一个 array,用 responseText 捞出来的转换为 string,有方法还原成 array 么

2016-05-19 13:07:08 +08:00
 Gary_Cheung
初学 ajax ,从数据库里捞数据,用 responseText 实现后,都转换为了 string ,可以转回 array 么?

PHP 取数据代码:
-$data 中是需要的数据,是一个 array

<?php

$conn=mysql_connect("localhost","root","root");
if(!$conn){
echo "连接失败";
}

mysql_select_db("gold_price",$conn);
mysql_query("set names utf8");

$sql="select * from `gold_price`";
$res=mysql_query($sql,$conn);
//print_r(mysql_fetch_array($res));

$j = 0;
while($row=mysql_fetch_row($res)){
$data[$j] = $row[2];
$date[$j++] = $row[1];
}

print_r($data);

?>
-----------------------------------------------------------------------------------------------------
javascript 部分
function byphp(){
var byphp = xmlhttp.responseText;
alert(byphp);


然后 byphp 就成了 string

眼睁睁看着结果是下面这样,就是没法用 array 操作数据,好心塞。
Array
(
[0] => 272.95
[1] => 272.95
[2] => 272.95
[3] => 270.20
[4] => 268.00
[5] => 270.40
[6] => 270.40
[7] => 270.80
[8] => 270.80
[9] => 267.30
[10] => 267.30
[11] => 267.50
[12] => 267.60
[13] => 267.75
[14] => 267.40
[15] => 267.40
[16] => 268.50
[17] => 270.75
[18] => 270.75
[19] => 269.60
[20] => 268.70
)
4008 次点击
所在节点    JavaScript
10 条回复
hcymk2
2016-05-19 13:14:57 +08:00
种瓜得瓜,种豆得豆。
你只能定义一个前后都可以接受的数据格式,之后在 byphp 里面解析出来转成数组。
dphdjy
2016-05-19 13:21:37 +08:00
中间用一个 dif 封装一下~
chaegumi
2016-05-19 13:26:23 +08:00
print_r 就错了
Gary_Cheung
2016-05-19 13:41:04 +08:00
@chaegumi 求指导~
itbeihe
2016-05-19 13:48:08 +08:00
print_r($data); 改成 print_r(json_encode($data));
js 部分
alert(JSON.parse(byphp));
另外要兼容 ie 6 , 7 html 中要引入 JSON 库
dphdjy
2016-05-19 13:55:23 +08:00
@itbeihe
直接交方法感觉不太好~
应该让 lz 自己发现 json/xml 等数据交互格式~
然后学习和筛选~
Gary_Cheung
2016-05-19 13:59:18 +08:00
@dphdjy
@itbeihe
大谢,既解决现有问题,又有学习方向 :)
ayuanshuai929
2016-05-19 15:48:01 +08:00
我记得用 ajax 取返回值的话,如果 PHP 加一个 header("Content-type:application/json")的话,回调的结果就是一个 json 对象,否则就是一个 string
msg7086
2016-05-20 10:36:40 +08:00
print_r 就错了。这货是调试用的,你拿来输出还怎么玩。
直接 echo json_encode($arr); 就行了

5 楼的做法是错的。
xqin
2016-05-23 16:35:44 +08:00
@msg7086 5 楼( @itbeihe ) 的做法是有不妥,但并不是错的, 因为 print_r 在输出数据的时候, 如果是 字符串或者数据, 其效果等同于 echo.

而 json_encode 的返回结果就是字符串, 所以他那里等于变相的使用了 echo 进行数据输出.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/279756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX