php抓取远程数据显示在下拉列表中

前言:周五10月20日的时候,经理让做一个插件,使用的thinkphp做这个demo

使用CURL抓取远程数据时如果出现乱码问题可以加入

header("content-type:text/html;charset=utf-8");

或者使用mb_convert_encoding函数进行字符编码的转换

在这个demo中要抓取的最终信息是要经过不断的层级调用,也即是

  1.根据appkey获得所有品牌,得到品牌id

  2.根据品牌id得到所有车型,得到车型id

  3.根据车型id得到所有款式,得到款式Id

  4.根据款式Id得到详细信息

使用了json解码函数解析服务器返回的Json数据,需要注意的是不要加

//curl_setopt($ch, CURLOPT_HEADER, 1);//不要加,不然无法正确解析json数据,因为数据多了http头文件信息

json_decode函数第二个参数为true确保返回值是数组

 

使用$this->assign("模版变量名",$解码后的数组)

在前端的下拉列表中即可以获取到全部的品牌数据:

请选择品牌:
<select name="list1" id="list1">
    <volist name="car1" id="vo">
        <option value="{$vo.name}">{$vo.name}</option>
    </volist>
</select>

使用ajax将选择的下拉列表值传递给后端,根据值用循环遍历数组的办法得到品牌id

 $(document).ready(function(){
    var car1=$("#list1 option:selected").val();
        $.ajax({
            type:"post",
            url:"{:U('Home/Car/car1')}",
            data:"car1="+car1,
            success:function(html){
                if(html){
//                    alert(html);
                    $("#list2").html(html);
                }
            }
        });
    });

得到id输出车型数据,后端代码:

//得到品牌的名称
$car1=I('post.car1');
...............................//部分curl省略
$json1=json_decode($output,true);
$result = $json1['result'];
foreach($result as $a){
    foreach($a as $b){
        if($b==$car1){
            //此处的$id1是要传递给url的
            $id1=$a['id'];
        }
    }
}      
..............................//再次进行curl操作,根据id得到所有的车型信息
$json2=json_decode($rs2,true);
$result2 = $json2['result'];
dump($result2);
//将型号的数组数据保存至session中,在型号的下拉列表中根据型号值遍历数组得到型号id
session("result2",$result2);
foreach($result2 as $val){
        echo $str1='<optgroup label="'.$val['name'].'">'."<---".$val['name']."--->".'</optgroup>';
        foreach($val['list'] as $v) {
        $str1='<option value="'.$v['name'].'">'.$v['name'].'</option>';
        echo $str1;
    }
}

以上的方法是正确无误的,为什么不用session直接保存id,因为前端ajax是动态选择型号名字,直接做在一个控制器的方法中得到的不是用户选择的型号

根据型号选择款式的ajax代码跟上述类似,之后仍然是遍历,遍历session保存的数组得到型号id,之后根据id得到款式的数组数据,输出html

 

以上方法类推,便完成了整个demo

关于CURL的使用规则在此:http://www.cnblogs.com/wgphp/p/7707917.html

  

 

  

 

  

 

posted @ 2017-10-22 12:52  博雅源  阅读(523)  评论(0编辑  收藏  举报