ajax获取PHP传递的JSON字符串

直接上代码,分为两部分:bar.php和bar.html.
bar.html中通过ajax获取bar.php返回的JSON字符串

bar.php
…………………..

<?
$a=rand(100,200);
$b=rand(100,200);
$c=rand(100,200);
$d=rand(100,200);
$e=rand(100,200);

$str=<<<STR

        "province":"北京市","population":$a|   // 没有大括号方便同事拼接。。|是为了方便我之后切割字符串
        "province":"天津市","population":$b|
        "province":"河北省","population":$c|
        "province":"山西省","population":$d
STR;

$str = json_encode($str); // 对字符串进行JSON格式的编码

echo $str;

?>

bar.html
……………………………….

$.ajax({
    type: "get",
    dataType: "json", // 返回值类型为dataType
    url: "../bar.php",
    success: function (data) {
        console.log("获取到的数据为 " + data);
        var data1 = data.split("|");
        console.log("分割|得到 " + data1);
        var arr = new Array();
        for (var i = 0; i< data1.length ;i++)
        {
            var data = "{" + data1[i] + "}";
            var json_str = JSON.parse(data); // 将JSON格式的字符串转化为JSON对象
            arr.push(json_str);
        }
        console.log("该得到的数组为 " + arr);
        shu(arr); // 调用的方法
    }
});

下面是我第一次做时写的ajax代码——php中没有对字符串进行编码那一步

$.ajax({
    type:"get",
    dataType:"html",
    url:"../bar.php",
    success:function (data) {
        console.log("传进来的数据 " + data);
        var data2 = data.split("|"); // 用|分割
        console.log("data2   " + data2 );
        console.log(data2.length);
        var arr_final = new Array();
        for (var i = 0; i< data2.length ; i++ )
        {
            var data_h = data2[i].split(","); // 用,分割
            console.log("data_h " + data_h.length + " " + data_h);
            for (var g = 0; g<2 ;g++ )
            {
                var data_g = data_h[g].split(":"); //用:分割
                console.log("data_g " + data_g.length + " " + data_g);
                for(var p = 0; p<2;p++){
                    var data_q = data_g[p];
                    if(data_q != null){

                        console.log("data_q " + " " + data_q);
                        console.log("\"的下标位置 " + data_q.indexOf("\""));
                        if (data_q.indexOf("\"") > -1){
                                    arr_final.push(data_q.substring(data_q.indexOf("\"") + 1, data_q.length -1));
                        }else{
                            arr_final.push(data_q);
                        }
                    }

                }


            }
        }
        console.log(arr_final);
        var atr_final = new Array();
//                for (var a = 0; a < arr_final.length; a ++){
        var n = arr_final.length / 4 ;
        console.log("组数 " + n);
        var c = 0;
        while (c < n){
            var str_f = "{\"" + arr_final[c*4] + "\":\"" + arr_final[c*4 + 1] + "\",\"" + arr_final[c*4 + 2] + "\":" + arr_final[c*4 + 3] + "}";
            c++;
            var json_str = JSON.parse(str_f);
//                        str_f = str_f.substring(1, str_f.length - 1);
            atr_final.push(json_str);
        }
//                }
        console.log("得到的数组" + atr_final + jQuery.type(atr_final));
        change(atr_final);
        console.log(atr_final[0]);
        // $("#hid").val(data);
    }
});

由于在php中没有对字符串进行编码,也就是传递过来的值是{北京:一线,人口:112121}这种,而我们需要的JSON格式的字符串是{“北京”:”一线”,“人口”:112121}这种,所以要各种切割获取,遍历然后加上引号。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值