一、通过jsonp get提交:
服务端:
<?php
$data = array(
"name"=>$_GET['name'],
"age"=>25,
);
echo $_GET['callback']."(".json_encode($data).")"; //相当于:echo 'getName({"name":"小妹子","age":25})';// 必须加前缀哦,是从客户端传过来的方法名
?>
ajax 客户端:
当前文件为:http://www.xiaoqiang.com/index.html
$.ajax({
url:'http://www.xiaoqiang2.com/getData.php', //跨域到http://www.xiaoqiang2.com,另,http://xiaoqiang.com也算跨域
type:'GET', //jsonp 类型下只能使用GET,不能用POST,使用post提交会造成有些浏览器获取不到返回 例如firebug
dataType:'jsonp', //指定为jsonp类型
data:{"name":"小美人"},//数据参数
jsonp:'callback',//服务器端获取回调函数名的key,对应后台有$_GET['callback']='getName';callback是默认值
jsonpCallback:'getName', //回调函数名
success:function(result){ //成功执行处理,对应后台返回的getName(data)方法。
$("#myData").html('你妹子: '+result.name+'的年龄:' '+result.age+'');//myData是一个div自己加就好了
},
error:function(msg){
//执行错误
}
});
二、cors 处理post 和get 跨域提交方法
主要是服务端加上头:
header('Access-Control-Allow-Origin:*');// *表示任何域名都可以提交过来,如果加上域名则表示只允许某个域名提交header('Access-Control-Allow-Methods:POST,GET');header('Access-Control-Allow-Credentials:true');
服务端输出代码:
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET');
header('Access-Control-Allow-Credentials:true');
echo "{\"result\":\"ok\"}";exit;
ajax 客户端提交代码:
$.ajax({
type: "POST",
url: "http://www.xiaoqiang.com/count/service.php",
dataType: "json",
data:{name:a, phone:b},
success: function(data){
}
});