记一次JQuery的跨站操作实现

公司项目里遇到的一个需求,由于美工将一个活动页面做在了另外的一个系统里,所以就涉及到JS的跨站操作 getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然,究其本质还是通过script标签动态加载js。 需要说明的是,getJSON利用的jsonp需要客户端与服务端作出配合。 客户端传递的URL里要包含callback变量,以形如callback=?的形式结尾。(jquery会随机生成一个字符串替换?传递给服务端) 服务端获取客户端传递的callback的值callbackValue,和需要传递的json字符串构成 callbackValue.’(’.json.’)'传回给客户端(示例为php字符串连接方式,其他语言类似) 这种方式实际上的流程是下面这样的: 1.首先在客户端注册一个callback, 然后把callback的名字传给服务器。 2.此时,服务器先生成 json 数据。 3.然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp. 4.最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。 5.客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数) 由于的我的渣渣前端技术,想脱离美工自己拼个前端页面出来实在是太难了,做iframe是一个更简洁的方法,但是个浏览器的兼容性也不好把握 最后实现的方法在这里记录一下好了. 流程是这样的:首先专题页面提交到该系统内的php页面,由PHP页面判断是否登录从而返回不同的结果,根据不同的结果输出不同的页面,然后在该系统内拿到弹出的页面,填入信息在本系统内做JS的表单验证 返回给php做远程curl提交到接口,然后由接口返回json判断结果,返回给本系统的客户端.涉及到的post提交再做上权限验证即可.