A产品是新项目,卖力编写JS接口文件,域名是localhost.testlink.com;

B产品引入JS接口文件,域名是localhost.xyh.com。

1、在A产品里编写JS接口文件代码

js请求php页面经由过程jsonp实现js跨域要求php剧本的解决计划 CSS

var src = $('script[id=certcenter]').attr('src');

这段代码的浸染是通过id来获取B产品引入js时的src属性字符串,从而获取参数。

if(isUndefined(src)){throw new Error(\"大众error tips from certCenter:js引入失落败!
\"大众);}

为了保险起见,如果B产品未引入或者id不对,将抛出非常。

var param = GetSrcParam(src);

//从引入的js获取参数function GetSrcParam(src) {//截取src中\公众?\"大众符后的字串var index = src.lastIndexOf(\公众?\公众);var url = src.substr(index+1,src.length);var theRequest = new Object();strs = url.split(\"大众&\公众);for(var i = 0; i < strs.length; i ++) {theRequest[strs[i].split(\"大众=\公众)[0]] = unescape(strs[i].split(\"大众=\公众)[1]);}return theRequest;}

这是截取src字符串里的参数。

//判断参数是否精确if(isUndefined(account)){throw new Error(\公众error tips from certCenter:参数account未传入!
\"大众);}if(isUndefined(token)){throw new Error(\"大众error tips from certCenter:参数token未传入!
\公众);}if(isUndefined(dleft) || isNaN(dleft)){dleft = 10;}if(isUndefined(dtop) || isNaN(dtop)){dtop = 10;}if(isUndefined(width) || isNaN(width)){width = 200;}if(isUndefined(height) || isNaN(height)){height = 80;}

校验参数是否有传入。
B产品必传的参数是用户账户account和加密校验token。

$.ajax({type: 'GET',cache: false,url:\"大众http://localhost.testlink.com/assess/GetAssess/call\公众,data:{\"大众account\公众:account,\"大众token\公众:token},dataType: \"大众jsonp\"大众,jsonp: \公众callback\"大众,jsonpCallback: \"大众success_jsonpCallback\"大众,success:function(result){var status = result.status;var msg = result.msg;var data = result.data;if(status == 1){var count = data.count;var return_url = data.url;var content = \公众<a target='_blank' href='\"大众+return_url+\"大众' id='cert_content'>您新来了<b>\公众+count+\公众</b>个</a>\公众;console.log(content);$(document.body).append(content);}else{console.log(\公众error tips from certCenter:\"大众+msg);}},error:function () {console.log(\公众error tips from certCenter:数据要求失落败,请稍后重试!
\"大众);}});

通过jsonp的ajax,要求A产品的PHP脚本。

A产品的PHP脚本部分代码如下:

以上代码是吸收ajax传过来的参数以及安全性校验。
jsonp返回的方法是:先将内容json_encode,并用括号包起来,

然后连同jsonp的callback方法名一起输出。

如果PHP脚本处理成功,将返回status为1的内容。

然后js那边吸收返回的内容,处理后进行展示。

B产品引入JS文件的方法是:

<script id=\公众certcenter\"大众 src=\公众http://localhost.testlink.com/static/js/certcenter.js?account=123@xyh.com&token=1e67ce6da2888ecebe20b73415725e46&dleft=200&dtop=100&width=400&height=80\"大众></script>

浏览器里打开B产品的这个页面,输出如下图:

通过上图知道:确实是从域名localhost.xyh.com来要求域名localhost.testlink.com的数据。

不知道以上教程有没有写清楚,如果有任何疑问和建议,欢迎评论提问!