zoukankan      html  css  js  c++  java
  • 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

      

      

      

  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/wgphp/p/7709379.html
Copyright © 2011-2022 走看看