ajax获取PHP传递的JSON字符串

来源:互联网 发布:如何设置数据库子符集 编辑:程序博客网 时间:2024/06/05 04:32

直接上代码,分为两部分: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":$dSTR;$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}这种,所以要各种切割获取,遍历然后加上引号。

原创粉丝点击