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