前言:周五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

  

  

  

php抓取远程数据显示在下拉列表中的更多相关文章

  1. php curl抓取远程页面内容的代码

    使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...

  2. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能

    使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息.实现这一功能也很简单,主要是依靠Http ...

  3. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  4. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

  5. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  6. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  7. file_get_contents抓取远程URL内容

    /** * POST URL * @param $url * @param null $post * @return false / string */ public static function ...

  8. 利用curl抓取远程页面内容

    最基本的操作如下 $curlPost = 'a=1&b=2';//模拟POST数据$cookie_file    =    tempnam('./temp','kie');//可选,保存ses ...

  9. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来 ...

随机推荐

  1. C语言typedef

    #include <stdio.h> //基本类型 typedef int MyInt; //可以对typedef产生的类型名二次起别名 typedef MyInt MyInt2; // ...

  2. 2018-2-13-win10-uwp-如何拖动一个TextBlock的文字到另一个TextBlock-

    title author date CreateTime categories win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock lindexi 2018-2-13 ...

  3. zdump - 时区输出器

    SYNOPSIS 总览 zdump [ -v ] [ -c cutoffyear ] [ zonename ... ] 描述 Zdump 对命令行中的每一个 zonename 输出其当前时间. 提供了 ...

  4. linux 7 添加永久路由方法

    linux 7 添加永久路由 用route命令添加 仅仅是当前状态下生效,一旦重启就会失效. 所以要在/etc/sysconfig/network-scripts/这个路径下添加一个文件route-{ ...

  5. 修改Ubuntu16.04默认主题标题栏的颜色

    默认主题为Ambiance: sudo gedit /usr/share/themes/Ambiance/gtk-3.0/gtk-main.css 将: @define-color dark_bg_c ...

  6. vue组件间函数调用

    vue父子组件间函数调用 <Child ref="myChild"></Child> // 父组件 // 引入子组件 import Child from ' ...

  7. delphi DBGrid简单自绘(字体颜色、背景等)

    delphi DBGrid简单自绘(字体颜色.背景等)  从网上找的代码 应该是C#写的,其实delphi 的操作类似: 1 2 3 4 5 6 7 8 9 10 11 12 13 void __fa ...

  8. 高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

    2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码. ...

  9. NX二次开发-UFUN选择草图对话框UF_UI_select_sketch

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //选择草图对话框 char sMessage[] = "选择 ...

  10. flutter 死亡红屏 隐藏

    当组件报错的时候会出现红屏现象,解决办法是覆盖原有的ErrorWidget 用一个空白的组件去替换它 1.main.dart中进行修改 新增覆盖代码: void setCustomErrorPage( ...