服务器端判断客户端浏览器类型
如何判断微信内置浏览器,首先需要获取微信内置浏览器的User Agent,经过在 iPhone 上微信的浏览器的检测,它的 User Agent 是:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1
所以通过识别 MicroMessenger 这个关键字来确定是否微信内置的浏览器了。
JAVA 判断是否微信浏览器
- <%
- String ua=((HttpServletRequest) request).getHeader("user-agent").toLowerCase();
- if (ua.indexOf("micromessenger") > 0) {// 是微信浏览器
- validation = true;
- }
- %>
- /***************************************************
- * 判断浏览器类型是否是IE,是则返回true,不是返回false
- * ServletActionContext是struts2上下文对象
- * @return boolean
- **************************************************/
- public static boolean isIE(){
- return ServletActionContext.getRequest().getHeader( "USER-AGENT" ).toLowerCase().indexOf( "msie" )>0?true:false ;
- }
方案一:正则表达式
通过观察规律,得出以下表达式:
- ;\s?([^;]+?)\s?(Build)?/
Java代码:
- Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/");
- Matcher matcher = pattern.matcher(userAgent);
- String model = null;
- if (matcher.find()) {
- model = matcher.group(1).trim();
- log.debug("通过userAgent解析出机型:" + model);
- }
以下为部分UserAgent,供测试,可以直接在EditPlus里验证。
Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 V1_AND_SQ_5.0.0_146_YYB_D QQ/5.0.0.2215
Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.3 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19
Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; SM-N9009 Build/JSS15J) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; Coolpad 5891 Build/JZO54K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.3.478 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; Coolpad 5891 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 V1_AND_SQ_5.0.0_146_YYB2_D QQ/5.0.0.2215
Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53
Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 QQ/5.0.0.165
Mozilla/5.0 (Linux; Android 4.3; zh-cn; SAMSUNG-GT-I9308_TD/1.0 Android/4.3 Release/11.15.2013 Browser/AppleWebKit534.30 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.2.3
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/5.0.3.10 (Baidu; P1 4.2.2)
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0
Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36 OPR/24.0.1565.82529
Mozilla/5.0 (Linux; U; Android 4.4.4; zh-CN; Nexus 4 Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/5.2.3.0 (Baidu; P1 4.0.4)
Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.3 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36
Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.0 LieBaoFast/2.12.0 Mobile Safari/535.19
Opera/9.80 (Android; Opera Mini/7.0.31907/34.2499; U; zh) Presto/2.8.119 Version/11.10
Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HW-HUAWEI_C8825D/C8825DV100R001C92B943SP01; 480*800; CTC/2.0) AppleWebKit/534.30 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; SGP521 Build/17.1.2.A.0.314) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; Android 4.4.2; SGP521 Build/17.1.2.A.0.314) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36
Mozilla/5.0 (Linux; U; Android 4.0.4; zh-CN; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.5.442 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; Android 4.4.2; zh-cn; SAMSUNG-SM-N9009 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-CN; HTC HTL22 Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36
Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; AMOI A920W Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36
Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; GT-N7100 Build/JRO03C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Huawei U8800 Android 2.3.3 Baidu 2.2 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/530.17 有用(0)
Huawei U8800 Android 2.3.3 UC 8.7 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31 有用(0)
Meizu MX M031 Android 4.0.3 Chrome 18 Mozilla/5.0 (Linux; Android 4.0.3; M031 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19 有用(0)
Meizu MX M031 Android 4.0.3 Opera 12.1 Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1210241511) Presto/2.11.355 Version/12.10 有用(0)
Meizu MX M031 Android 4.0.3 -built-in * Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(0)
Meizu MX M031 Android 4.0.3 Baidu 2.2 Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/530.17 有用(0)
Meizu MX M031 Android 4.0.3 UC 8.7 Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31 有用(0)
Meizu M9 Android 4.0.3 QQ 3.7 MQQBrowser/3.7/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Normal Mode 有用(0)
Meizu M9 Android 4.0.3 QQ 3.5 MQQBrowser/3.5/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960) Speed Mode 有用(0)
Meizu M9 Android 4.0.3 -built-in * Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(0)
Meizu M9 Android 4.0.3 QQ 3.5 MQQBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Normal Mode 有用(0)
Meizu MX M031 Android 4.0.3 Maxthon 2.7 Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(0)
Huawei U8800 Android 2.3.3 Maxthon 2.7 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 有用(0)
Huawei U8800 Android 2.3.3 QQ 3.7 MQQBrowser/3.7/Adr (Linux; U; 2.3.5; zh-cn; U8800 Build/U8800V100R001C00B528G002;480*800) Speed Mode 有用(0)
Huawei U8800 Android 2.3.3 Dolphin 9.1 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 有用(0)
Huawei U8800 Android 2.3.3 QQ 3.7 MQQBrowser/3.7/Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Normal Mode 有用(0)
Huawei U8800 Android 2.3.3 -built-in * Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Samsung P6200(GALAXY Tab) Android 3.2 -built-in * Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13 有用(0)
Huawei U8800 Android 2.3.3 Maxthon 4.0 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 有用(0)
Meizu MX M031 Android 4.0.3 Baidu 2.3 Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.3 Version/4.0 Mobile Safari/530.17 baidubrowser/023_1.41.3.2_diordna_069_046/uzieM_51_3.0.4_130M/1200a/963E77C7DAC3FA587DF3A7798517939D%7C408994110686468/1 有用(0)
Huawei U8800 Android 2.3.3 Baidu 2.3 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.3 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.6.3.2_diordna_008_084/IEWAUH_01_5.3.2_0088U/1001a/BE44DF7FABA8768B2A1B1E93C4BAD478%7C898293140340353/1 有用(0)
Huawei U8800 Android 2.3.3 Dolphin 9.2 Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 有用(0)
HTC S720e(One X) Android 4.0.3 -built-in * Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(1)
HTC S720e(One X) Android 4.0.3 UC 8.7 Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31 有用(0)
Meizu MX M031 Android 4.0.3 Dolphin Min 2.3 Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(0)
Meizu MX M031 Android 4.0.3 QQ 4.0 MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1 有用(0)
Meizu M9 Android 4.0.3 QQ 3.7 MQQBrowser/3.7/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960)
Meizu MX2 M040 Android 4.1 UC 9.4 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; M040 Build/JRO03H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.4.1.362 U3/0.8.0 Mobile Safari/533.1 有用(0)
Meizu MX2 M040 Android 4.1 Chrome 31 Mozilla/5.0 (Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36 有用(0)
Meizu MX2 M040 Android 4.1 猎豹 2.8 Mozilla/5.0 (Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36 有用(0)
Meizu MX2 M040 Android 4.1 Baidu 4.1 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/4.2.4.0 (Baidu; P1 4.1.1) 有用(0)
Meizu MX M031 Android 4.1 -built-in * Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M031 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(1)
Meizu MX M031 Android 4.1 UC 8.8 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; M031 Build/JRO03H) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/8.8.3.278 U3/0.8.0 Mobile Safari/534.31 有用(0)
Meizu MX2 M040 Android 4.1 QQ 4.1 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.1 Mobile Safari/533.1 有用(0)
Meizu MX2 M040 Android 4.1 -built-in * Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 有用(2)
Samsung P6200(GALAXY Tab) Android 3.2 QQ HD 2.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 有用(0)
Samsung P6200(GALAXY Tab) Android 3.2 UC HD 2.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3) AppleWebKit/534.31 (KHTML, like Gecko) Chrome/17.0.558.0 Safari/534.31 UCBrowser/2.3.1.257
通过验证,成功率95%以上。
PHP 判断是否微信浏览器
- function is_weixin(){
- if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !==false){
- return true;
- }
- return false;
- }
JavaScript判断是否微信浏览器
- function is_weixin(){
- var ua=navigator.userAgent.toLowerCase();
- if(ua.match(/MicroMessenger/i)=="micromessenger"){
- return true;
- }else{
- return false;
- }
- }
JSTL 与 JSP 或者 Java 相互传递变量的代码
两种方式
PHP判断POST或GET请求,返回提交服务器的JSON数据(支持跨越)
注明:暂时不支持跨域名下GET请求
http://192.168.66.90:8080//php/POST_GET.php
- <?php
- //目前暂不支持跨域GET请求
- header('Content-type: text/json');
- html_entity_decode($string, ENT_QUOTES, 'UTF-8');
- //回调参数设置
- $param="callback";
- $callback=$_REQUEST[$param];
- //判断请求参数就是同域名下AJAX请求
- if(!isset($callback)){
- //返回多个Id
- if($_POST){
- exit(json_encode($_POST));
- }else if($_GET){
- exit(json_encode($_GET));
- }
- //返回单个Id
- if($_POST['Id']){
- $a=$_POST['Id'];
- //echo $a;
- exit(json_encode($a));
- }else if($_GET['Id']){
- $a=$_GET['Id'];
- //echo $a;
- exit(json_encode($a));
- }
- //强制开关按钮
- if($_POST['CT']){
- $a=$_POST['CT'];
- echo $a;
- }else if($_GET['CT']){
- $a=$_GET['CT'];
- echo $a;
- }
- }
- //判断请求参数存在就是实现JSONP跨越提交
- if(isset($callback)){
- //强制开关按钮
- if($_POST['Id']){
- $a=$_POST['Id'];
- $b=json_encode($a);
- $str=$callback."(".$b.")";
- }else{
- $a=$_POST['CT'];
- $str=$callback."(".$a.")";
- }
- echo $str;
- }
- ?>
http://192.168.66.90:8080/Ajax/s6.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>ajax test</title>
- <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- //点击请求http接口,删除多条数据
- $(".delall").click(function(){
- //拼写成JSON数据格式,提交http接口JSON不需要转字符串
- //alert(JSON.stringify(obj))
- var val=$(".dellink.on").map(function(){
- return $(this).attr("id");
- }).get();
- var obj={Id:val};
- //var vot=JSON.stringify(obj);
- //alert(obj)
- /***** 同域名下多条ID请求
- $.ajax({
- url:"/php/POST_GET.php",
- type:"post",
- dataType:"json",
- //jsonp:"callback",
- data:obj,
- success:function(data){
- //var yy=JSON.stringify(data);
- //alert(yy)
- $.each(data.Id,function(i,item){
- $('#'+item).slideUp();
- });
- },
- error:function(){
- alert("异常!");
- }
- });
- */
- /***** 跨域名多条ID请求 *****/
- $.ajax({
- url:"http://192.168.66.90:8080//php/POST_GET.php",
- type:"post",
- dataType:"jsonp",
- jsonp:"callback",
- data:obj,
- success:function(data){
- //var yy=JSON.stringify(data);
- //alert(data)
- $.each(data,function(i,item){
- $('#'+item).slideUp();
- });
- },
- error:function(){
- alert("异常!");
- }
- });
- });
- //点击请求http接口,删除单条数据
- $(".dellink").click(function() {
- var thisId=$(this).attr("id");
- /***** 同域名Ajax请求
- $.ajax({
- url:"/php/POST_GET.php",
- type:"post",
- dataType:"json",
- //jsonp:"callback",
- data:{Id:thisId},
- success:function(data){
- //var yy=JSON.stringify(data);
- //alert(yy)
- $.each(data,function(i,item){
- $('#'+item).slideUp();
- });
- },
- error:function(){
- alert("异常!");
- }
- });
- *****/
- /****** 可支持jsonp跨域名请求 */
- $.ajax({
- url:"http://192.168.66.90:8080//php/POST_GET.php",
- type:"post",
- dataType:"jsonp",
- jsonp:"callback",
- data:{Id:thisId},//{Id:"44554547"}
- success:function(data){
- var yy=JSON.stringify(data);
- //alert(data)
- if(thisId==data){
- $('#'+data).slideUp();
- }
- },
- error:function(){
- alert("异常!");
- }
- });
- });
- //控制开关(服务器返回0或1)
- $(".control").click(function(){
- var hason=$(this).hasClass("on");
- /***** 同域名下访问http接口
- if(hason){
- $.ajax({
- url:"/php/POST_GET.php",
- type:"post",
- dataType:"json",
- data:{CT:"0"},
- success:function(data){
- $(".control").removeClass("on");
- $(".control").html("广告关闭")
- },
- error:function(){
- alert("异常!");
- }
- });
- }else{
- $.ajax({
- url:"/php/POST_GET.php",
- type:"post",
- dataType:"json",
- data:{CT:"1"},
- success:function(data){
- $(".control").addClass("on");
- $(".control").html("广告开启")
- },
- error:function(){
- alert("异常!");
- }
- });
- }
- */
- /***** 跨域名访问http接口 *****/
- if(hason){
- $.ajax({
- url:"http://192.168.66.90:8080//php/POST_GET.php",
- type:"post",
- dataType:"jsonp",
- jsonp:"callback",
- data:{CT:"0"},
- success:function(data){
- if(data==0){
- $(".control").removeClass("on");
- $(".control").html("广告关闭")
- }
- },
- error:function(){
- alert("异常!");
- }
- });
- }else{
- $.ajax({
- url:"http://192.168.66.90:8080//php/POST_GET.php",
- type:"post",
- dataType:"jsonp",
- jsonp:"callback",
- data:{CT:"1"},
- success:function(data){
- if(data==1){
- $(".control").addClass("on");
- $(".control").html("广告开启")
- }
- },
- error:function(){
- alert("异常!");
- }
- });
- }
- });
- //control end
- });
- </script>
- </head>
- <body>
- <style type="text/css">
- body { font-family: 'Microsoft Yahei'; margin:0; padding:0; font-weight:normal}
- .dellink,.delall,.list .control{height:60px; line-height:60px; color:#fff; width:600px; font-size:22px; text-align:center; margin:2px auto; cursor:pointer;}
- .dellink{ display:block; background:#000;}
- .delall{ background: #CC3366; }
- .list .control{ background:#CC0033; }
- .list .on{background:#006633;}
- </style>
- <a class="dellink on" id="1001">删除单条数据 0111</a>
- <a class="dellink" id="1002">删除单条数据 022</a>
- <a class="dellink on" id="1003">删除单条数据 0333</a>
- <a class="dellink on" id="1004">删除单条数据 044</a>
- <a class="dellink" id="1005">删除单条数据 0555</a>
- <div class="delall">请求http接口【并删除多条数据】</div>
- <div class="list">
- <div class="control on">广告开启</div>
- </div>
- </body>
- </html>
使用原生JS写Ajax与后端PHP跨越请求实例
http://192.168.66.90:8080/php/Ajax_.php?callback=
- <?php
- //公共声明
- header('Content-type: text/json');
- html_entity_decode($string, ENT_QUOTES, 'UTF-8');
- //回调参数设置
- $param="callback";
- $callback=$_REQUEST[$param];
- //自造Json数据
- $str2='[{"id":"1","name":"测试1"},{"id":"2","name":"测试2"}]';
- $str=$callback."(".$str2.")";
- //判断请求参数存在就会输出Json数据
- //if(isset($callback)&&!empty($callback)){
- if(isset($callback)){
- if (isset($_POST["mail"])&&!emptyempty($_POST["mail"])){
- echo "1";
- }else{
- //echo "N0, mail is not set";
- echo $str;
- }
- }
- //判断请求参数不存在就输出错误信息
- if(!isset($callback)){
- header("Content-type: text/html; charset=utf-8");
- $str="<h1>400 Required String parameter '{$param}' is not present</h1><hr /><small>http Request with error params: none callback function</small>";
- echo $str;
- //strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签
- //echo strip_tags($str);
- }
- ?>
http://192.168.66.90:8080/html/test/js_Ajax.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>无标题文档</title>
- </head>
- <body>
- <input value="张三" type="text" style="width:96%; background: #F1F1ED; color:#000; text-align:center; font-size:6em; padding:0.2em; margin-bottom:0.5em; border:0.1em #333 solid " id="input"/>
- <div style=" width:100%; background:#000; color:#fff; text-align:center; font-size:6em; cursor:pointer; padding:0.2em;" id="html">点击事件</div>
- <script type="text/javascript">
- /**
- * 复杂的ajax封装
- * @version 1.0
- *
- * 用法
- * var xmlhttp = new YAjax();
- * xmlhttp.request({
- * url : "./demo.php", // get请求时 可以这样写 "./demo.php?name=zhangsan"
- * method : "POST",
- * data : "name=李四", // 支持json传值 {"name":"zhangsan"} get时不用该参数
- * receiveType : "html", // json html or xml
- * timeout : 3000, // 3秒
- * success : function(d) {alert(d);},
- * error : function(xmlhttp){alert('timeout');}
- * });
- *
- */
- function YAjax() {
- thisthis._self = this;
- thisthis.xmlhttp = this.init();
- }
- YAjax.prototype = {
- constructor : YAjax,
- // 初始化xmlhttpRequest
- init : function() {
- var xmlhttp = null;
- // 针对不同浏览器建立这个对象的不同方式写不同代码
- if(window.XMLHttpRequest) {
- xmlhttp = new XMLHttpRequest();
- //针对某些特定版本的Mozillar浏览器的BUG进行修正
- if(xmlhttp.overrideMimeType) {
- xmlhttp.overrideMimeType("text/xml");
- }
- } else if (window.ActiveXObject) {
- var activexName = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
- for (var i=0; i<activexName.length; i++) {
- try {
- xmlhttp = new ActiveXObject(activexName[i]);
- break;
- } catch(e) {}
- }
- }
- return xmlhttp;
- },
- extend : function(destination, source, override) {
- if(undefined == override) override = true;
- if(typeof destination != "object" && typeof destination != "function") {
- if(!override)
- return destination;
- else
- destination = {};
- }
- var property = '';
- for(property in source) {
- if(override || !(property in destination)) {
- destination[property] = source[property];
- }
- }
- return destination;
- },
- // json to string {name: 'lisi', age: 10} --> name=lisi&age=10
- json2String : function(jsonData) {
- var strArr = [];
- for(var k in jsonData) {
- strArr.push(k + "=" + jsonData[k]);
- }
- return strArr.join("&");
- },
- // 发送http 请求
- request : function(opt) {
- var _self = this,
- isTimeout = false,
- timeFlag = 0,
- options = {
- url : "", // string
- data : "", // json or string
- method : "POST",
- receiveType : "html", // html json or xml
- timeout : 7000,
- async : true,
- success : function(){alert("define your success function");},
- error : function(xmlhttp){}
- };
- if("data" in opt) {
- if(typeof opt.data == "string"){} else {opt.data = this.json2String(opt.data); }
- }
- options = this.extend(options, opt);
- this.xmlhttp.onreadystatechange = function(){
- if(_self.xmlhttp.readyState == 4) {
- if(!isTimeout && _self.xmlhttp.status == 200) {
- clearTimeout(timeFlag);
- var t = options.receiveType.toLowerCase();
- if(t == "html") {
- options.success(_self.xmlhttp.responseText);
- } else if(t == "xml") {
- options.success(_self.xmlhttp.responseXML);
- } else if(t == 'json') {
- try {
- var obj = JSON.parse(_self.xmlhttp.responseText);
- options.success(obj);
- } catch(e) {
- var str = '(' + _self.xmlhttp.responseText + ')'; //json字符串
- options.success(eval(str));
- }
- } else {}
- } else {
- clearTimeout(timeFlag);
- options.error(_self.xmlhttp);
- }
- }
- };
- timeFlag = setTimeout(function(){
- if(_self.xmlhttp.readyState != 4) {
- isTimeout = true;
- _self.xmlhttp.abort();
- clearTimeout(timeFlag);
- }
- }, options.timeout);
- this.xmlhttp.open(options.method.toUpperCase(), options.url, options.async); //打开与服务器连接
- if(options.method.toUpperCase() == "POST") {
- this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //post方式要设置请求类型
- this.xmlhttp.send(options.data); //发送内容到服务器
- } else {
- this.xmlhttp.send(null);
- }
- }
- };
- var text=document.getElementById("input").value;
- var html=document.getElementById("html");
- html.onclick=function(){
- var xmlhttp = new YAjax();
- xmlhttp.request({
- url:"http://192.168.66.90:8080/php/Ajax_.php?callback=", // get请求时 可以这样写 "./demo.php?name=zhangsan"
- method:"POST",
- data:{"mail":"zhangsan@163.com"}, // 支持json传值 {"name":"zhangsan"} get时不用该参数 "name=李四"
- receiveType:"json", // json html or xml
- timeout:3000, // 3秒
- success:function(data){
- //JSON.stringify(data); //可以将json对象转换成json对符串
- //JSON.parse(jsonstr); //可以将json字符串转换成json对象
- if(data==1){
- alert("传参已被服务器接收,"+"输入框内容:"+text)
- }
- else{
- alert(JSON.stringify(data[0].name));
- }
- },
- error:function(xmlhttp){alert('timeout');}
- });
- };
- </script>
- </body>
- </html>
php数组转Json
- <?php
- header("Content-Type: text/html; charset=utf-8");
- $mydb=mysql_connect("localhost","root","root");
- if (!$mydb){
- die('Could not connect:'. mysql_error());
- }
- $db_selected=mysql_select_db("mysql",$mydb);
- //$sql = "SELECT * from Person WHERE Lastname='Adams'";
- $sql="SELECT * from user";
- $result=mysql_query($sql,$mydb);
- //print_r(mysql_fetch_array($result));
- //处理输出数组格式
- //$db1=mysql_query("select * from `tb_info`");
- /*
- $arr=array();
- while($rows=mysql_fetch_array($db1)){
- $key=$rows['id']
- $arr[$key] = $rows['qucount']
- }
- */
- /**************************************************************
- *
- * 使用特定function对数组中所有元素做处理
- * @param string &$array 要处理的字符串
- * @param string $function 要执行的函数
- * @return boolean $apply_to_keys_also 是否也应用到key上
- * @access public
- *
- *************************************************************/
- function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
- {
- static $recursive_counter = 0;
- if (++$recursive_counter > 1000) {
- die('possible deep recursion attack');
- }
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- arrayRecursive($array[$key], $function, $apply_to_keys_also);
- } else {
- $array[$key] = $function($value);
- }
- if ($apply_to_keys_also && is_string($key)) {
- $new_key = $function($key);
- if ($new_key != $key) {
- $array[$new_key] = $array[$key];
- unset($array[$key]);
- }
- }
- }
- $recursive_counter--;
- }
- /**************************************************************
- *
- * 将数组转换为JSON字符串(兼容中文)
- * @param array $array 要转换的数组
- * @return string 转换得到的json字符串
- * @access public
- *
- *************************************************************/
- function JSON($array) {
- arrayRecursive($array, 'urlencode', true);
- $json = json_encode($array);
- return urldecode($json);
- }
- $array = array
- (
- 'Name'=>'希亚',
- 'Age'=>20
- );
- /*
- $array=array (
- 0 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 1 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 2 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '25',
- 'name' => '男士',
- 'province' => '上海',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 3 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '186****1046',
- ),
- 4 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '200元的爱玛电动车代金券',
- 'mobile' => '186****1046',
- ),
- 5 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 6 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 7 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 8 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '河南',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 9 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '0',
- 'photoPath' => '/resources/v20/images/boy.png',
- ),
- 'age' => '24',
- 'name' => '男士',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- 10 =>
- array (
- 'icon' =>
- array (
- 'hasPhoto' => '1',
- 'photoPath' => '/201412/11/11/49/1418269782350A03EA57_c.jpg',
- ),
- 'age' => '20',
- 'name' => '白日做梦',
- 'province' => '北京',
- 'lottery' => '100元的爱玛电动车代金券',
- 'mobile' => '',
- ),
- );
- */
- echo JSON($array);
- ?>
php获取客户端GET参数请求返回JSON数据
- <?php
- //公共声明
- header('Content-type: text/json');
- html_entity_decode($string, ENT_QUOTES, 'UTF-8');
- //回调参数设置
- $param="callbackAA";
- $callback=$_REQUEST[$param];
- $str = '{"topNew":{"specialType":245,"title":"宝宝该由谁来带","img":"http://photo.zastatic.com/photo/activity/1397451753098.jpg","url":"http://t.zhenai.com/vote/voteindex.do?specialType=244&fromMainPage=1","count":23105},"topTwo":[{"specialType":173,"title":"让疯狂眼球帮你搞定爱情","img":"http://photo.zastatic.com/photo/activity/1386918466579.jpg","url":"http://t.zhenai.com/activity/carzyEyes.do?source=0&fromMainPage=2","count":3121},{"specialType":104,"title":"你问我爱你有多深 聘礼代表我的心","img":"http://photo.zastatic.com/photo/activity/1373638053176.jpg","url":"http://t.zhenai.com/activity/brideprice.do?source=3&fromMainPage=3","count":351005}]}';
- //自造Json数据
- $str2='[{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":25,"name":"男士","province":"上海","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":"186****1046"},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"200元的爱玛电动车代金券","mobile":"186****1046"},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"河南","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"1","photoPath":"/201412/11/11/49/1418269782350A03EA57_c.jpg"},"age":20,"name":"白日做梦","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""}]';
- $str = $callback . "(" .$str2.")";
- //判断存在参数才输出
- if(isset($callback)&&!empty($callback)){
- echo $str;
- }
- //判断参数是否为空,提示默认信息
- if(empty($callback)){
- header("Content-type: text/html; charset=utf-8");
- $str="<h1>400 Required String parameter '{$param}' is not present</h1><hr /><small>http Request with error params</small>";
- echo $str;
- }
- ?>
最终更新:
- <?php
- //公共声明
- header('Content-type: text/json');
- html_entity_decode($string, ENT_QUOTES, 'UTF-8');
- //回调参数设置
- $param="callbackAA";
- $callback=$_REQUEST[$param];
- $str = '{"topNew":{"specialType":245,"title":"宝宝该由谁来带","img":"http://photo.zastatic.com/photo/activity/1397451753098.jpg","url":"http://t.zhenai.com/vote/voteindex.do?specialType=244&fromMainPage=1","count":23105},"topTwo":[{"specialType":173,"title":"让疯狂眼球帮你搞定爱情","img":"http://photo.zastatic.com/photo/activity/1386918466579.jpg","url":"http://t.zhenai.com/activity/carzyEyes.do?source=0&fromMainPage=2","count":3121},{"specialType":104,"title":"你问我爱你有多深 聘礼代表我的心","img":"http://photo.zastatic.com/photo/activity/1373638053176.jpg","url":"http://t.zhenai.com/activity/brideprice.do?source=3&fromMainPage=3","count":351005}]}';
- //自造Json数据
- $str2='[{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":25,"name":"男士","province":"上海","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":"186****1046"},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"200元的爱玛电动车代金券","mobile":"186****1046"},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"河南","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"0","photoPath":"/resources/v20/images/boy.png"},"age":24,"name":"男士","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""},{"icon":{"hasPhoto":"1","photoPath":"/201412/11/11/49/1418269782350A03EA57_c.jpg"},"age":20,"name":"白日做梦","province":"北京","lottery":"100元的爱玛电动车代金券","mobile":""}]';
- $str=$callback."(".$str2.")";
- //判断请求参数存在就会输出Json数据
- if(isset($callback)){
- echo $str;
- }
- //判断请求参数不存在就输出错误信息
- if(!isset($callback)){
- header("Content-type: text/html; charset=utf-8");
- $str="<h1>400 Required String parameter '{$param}' is not present</h1><hr /><small>http Request with error params: none callback function</small>";
- echo $str;
- }
- ?>