V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Gary_Cheung
V2EX  ›  JavaScript

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

  •  
  •   Gary_Cheung · 2016-05-19 13:07:08 +08:00 · 3985 次点击
    这是一个创建于 3110 天前的主题,其中的信息可能已经有所发展或是发生改变。
    初学 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
    )
    10 条回复    2016-05-23 16:35:44 +08:00
    hcymk2
        1
    hcymk2  
       2016-05-19 13:14:57 +08:00
    种瓜得瓜,种豆得豆。
    你只能定义一个前后都可以接受的数据格式,之后在 byphp 里面解析出来转成数组。
    dphdjy
        2
    dphdjy  
       2016-05-19 13:21:37 +08:00 via Android
    中间用一个 dif 封装一下~
    chaegumi
        3
    chaegumi  
       2016-05-19 13:26:23 +08:00
    print_r 就错了
    Gary_Cheung
        4
    Gary_Cheung  
    OP
       2016-05-19 13:41:04 +08:00
    @chaegumi 求指导~
    itbeihe
        5
    itbeihe  
       2016-05-19 13:48:08 +08:00   ❤️ 1
    print_r($data); 改成 print_r(json_encode($data));
    js 部分
    alert(JSON.parse(byphp));
    另外要兼容 ie 6 , 7 html 中要引入 JSON 库
    dphdjy
        6
    dphdjy  
       2016-05-19 13:55:23 +08:00 via Android   ❤️ 1
    @itbeihe
    直接交方法感觉不太好~
    应该让 lz 自己发现 json/xml 等数据交互格式~
    然后学习和筛选~
    Gary_Cheung
        7
    Gary_Cheung  
    OP
       2016-05-19 13:59:18 +08:00
    @dphdjy
    @itbeihe
    大谢,既解决现有问题,又有学习方向 :)
    ayuanshuai929
        8
    ayuanshuai929  
       2016-05-19 15:48:01 +08:00 via iPhone
    我记得用 ajax 取返回值的话,如果 PHP 加一个 header("Content-type:application/json")的话,回调的结果就是一个 json 对象,否则就是一个 string
    msg7086
        9
    msg7086  
       2016-05-20 10:36:40 +08:00
    print_r 就错了。这货是调试用的,你拿来输出还怎么玩。
    直接 echo json_encode($arr); 就行了

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

    而 json_encode 的返回结果就是字符串, 所以他那里等于变相的使用了 echo 进行数据输出.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2648 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:50 · PVG 10:50 · LAX 18:50 · JFK 21:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.