html&js:

js代码的编写与正常的ajax请求没有区别,示例如下:

<html>
<head>
<title>CORE-AJAX跨域</title>
<meta charset="utf-8" />
<script src="http://gongwen.sinaapp.com/Public/Js/jquery-1.7.2.min.js"></script>
</head>
<body>
<div>
<a id='cors_submit' href="javascript:void(0);" title="cors测试操作">cors测试操作</a><br><br><br>
<a id='cors_submit2' href="javascript:void(0);" onclick="javascript:cors_subusermsg()" title="cors保存信息操作">cors保存信息操作</a><br>
</div>
<script type="text/javascript">
$(function(){

$("#cors_submit").on("click",function(){
testcors();
return false;
});
function testcors(){
var url='http://huodongs.laohu.com/common_jc/cors.php';
$.post(
url,
{name:'巩文',blog:'www.bestphper.cn'},
function(data){
var info=eval('('+data+')');
$('body').html('name:'+info.name+'<br>blog:'+info.blog+'<br>from:'+info.from);
});
}
$("#cors_submit2").on("click",function(){
cors_subusermsg();
return false;
});
//cors跨域 提交用户信息
function cors_subusermsg(){
//发请求
$.post(
'http://huodongs.laohu.com/common_jc/ajax.php',
{act:'cors_contact',activityID:86,name:'唐生',sex:'男',birthday:'2001-1-1',mobile:'13041016666'},
function(Rdata){
console.info(Rdata);
if(Rdata.result){
//保存成功进行抽奖
var _uid = Rdata.data["uid"];
alert('新用户id:'+_uid);

}else{
//错误信息提示
alert('错误码:'+parseInt(Rdata.errorcode));
}
}
);
};

});
</script>
</body>
</html>

 

php后台:

关键点:

//header("Access-Control-Allow-Origin:http://dl.laohu.com");//指定哪个域的页面可以访问本接口
header("Access-Control-Allow-Origin:*");//允许所有网页跨域访问的地址设置

测试代码如下

<?php
//注此文件在http://www.111cn.net域名下
header("Access-Control-Allow-Origin:http://dl.laohu.com");
$arr=array(
'name'=>$_POST['name'].'_return',
'blog'=>$_POST['blog'].'_return',
'from'=>'http://www.111cn.net'
);
echo json_encode($arr);

保存信息后台代码类似,如下
<?php
/**
* [wanmei.com] (C)2004-2014 Beijing Perfect World Network Technology Co., Ltd.
* 用于cors跨域api的测试
*/
defined('IN_APP') OR exit('No direct script access allowed');
defined('IN_M_AJAX') OR exit('No access allowed');
//header("Access-Control-Allow-Origin:http://dl.laohu.com");//允许跨域访问的地址设置
header("Access-Control-Allow-Origin:*");//允许跨域访问的地址设置

$mobile = isset($_REQUEST['mobile']) ? trim(strip_tags(($_REQUEST['mobile']))) : 0;
$activity_id = isset($_REQUEST['activityID']) ? intval($_REQUEST['activityID']) : 0;

if (!is_mobile($mobile)) {
//手机号错误
$ret['errorcode'] = 1;
$ret['result'] = false;
ExitJsonp($json, $ret);
}

if (empty($activity_id)) {
//活动ID错误
$ret['errorcode'] = 2;
$ret['result'] = false;
ExitJsonp($json, $ret);
}
/*验证活动是否可以参与*/
$tmp =intval(checkActivity($activity_id,''));


if($tmp>1){
$ret['errorcode'] =$tmp;
$ret['result'] =false;
ExitJsonp($json, $ret);
}
$Sex = isset($_REQUEST['sex']) ?trim(strip_tags($_REQUEST['sex'])): '';
$Birthday = isset($_REQUEST['birthday']) ?trim(strip_tags($_REQUEST['birthday'])): '';
if(strtotime($Birthday)>time()){
$ret['errorcode'] =14;//日期错误
$ret['result'] =false;
ExitJsonp($json, $ret);
}
$Name = isset($_REQUEST['name']) ?trim(strip_tags($_REQUEST['name'])): '';
$dateline=time();
$sql_fields = " set activity_id='{$activity_id}',`mobile`='{$mobile}',user_name='{$Name}',`role`='{$Sex}',`server`='{$Birthday}',`dateline`='{$dateline}' ";

$sql = "SELECT `id` from admin_questions_anwers where activity_id='{$activity_id}' and `mobile`='{$mobile}'";
$uid=intval($_DB->getOne( $sql ));
if ( ! $uid ) {
$sql = "insert into admin_questions_anwers ".$sql_fields;
/*$ret['sql'] = $sql;exit($json->encode($ret));*/
$query = $_DB->query($sql);
if($_DB->affected_rows()>0){
$ret['errorcode'] = 100;
$ret['result'] = true;
$ret['data'] = array('uid'=>$_DB->insert_id());
}
else{
$ret['errorcode'] = 7;
$ret['result'] = false;
}
}
else{
$sql = "UPDATE `admin_questions_anwers` ".$sql_fields." where activity_id='{$activity_id}' and `mobile`={$mobile} ";
$_DB->query($sql);
$ret['errorcode'] = 100;
$ret['result'] = TRUE;
$ret['data'] = array('uid'=>$uid);
}
ExitJsonp($json, $ret);
/**
* @param $json
* @param $ret
*/
function ExitJsonp($json, $ret)
{
exit($json->encode($ret));
}
/* End of file */


cors的跨域实现还可以通过XMLHttpRequest对象来操作,没有做具体测试

posted on 2015-07-31 17:57  京刚  阅读(973)  评论(0)    收藏  举报