jq跨域代理

编程入门 行业动态 更新时间:2024-10-04 01:17:30

<a href=https://www.elefans.com/category/jswz/34/1743316.html style=jq跨域代理"/>

jq跨域代理

from :

(请求的跨域服务器不支持常规”?”查询请求时的解决方案)

昨天第一次做VIP需求时,发现一个超奇怪的问题,我有以下URL地址:

///

放在浏览器地址栏中访问可以得到正确的输出,但我一放到 AJAX 中去异步请求后用 FireBug 调试时确怎么都不出结果,和水龙兄一起调试了很久都没有发现是什么问题,由于这个URL对方的程序是用XX框架写的,我是第一次使用这个XX框架进行开发,对它不是很熟(有时间要研究一下它的内核源码),总以为是它什么地方有设置影响了的;就在我快要吐血时,乐锋(对这块比较了解的哥们)终于上线了,我把问题向他说下后,他第一反应就是:”你是不是跨域访问了。。”

OH FUCK

,我和水龙一直研究程序逻辑,竟然忽视了自己的当前域名,因为我当前执行请求的域名是:

.html

问了一下乐锋,现系统中已提供的几个方案(函数)都不太令人满意或太烦琐了,和乐锋讨论了几种方案后,一时没有找到最好解决方案,一看时间,22:00了,天色已晚,不打扰他晚上陪老婆了!回到家里本想通过利用 iframe 来加载跨域的 url 来得到 dom 数据,研究后发现的想法太天真了,JS的安全策略跟本不允许我这样做;想通过 proxy 代理的方案,但想了一下,那比现在系统中所使用的方案更麻烦,详细研究了一下jQuery最新版关于跨域的解决方案后,终于让我研究出了一种非常方便的解决方案:

如下是代码示例:

—————— .html ——————-

/*

AJAX跨域问题完美解决方案

研究:袁维

启示:乐锋

*/

function jsonCallBack(url,callback)

{

$.getScript(url,function(){

callback(json);

});

}

function fun1()

{

jsonCallBack('.php',function(json){

alert(json.message);

})

}

 script>

跨域访问

—————— .php ——————-

$ary= array('result'=>0,'message'=>'跨域成功');$json=json_encode($ary);//一定要这样定义输出最后的JSON数据,这是利用JS的闭包特性echo"var json=$json;";?>

该方案注意事项:

1:jQuery的版本必需大于 1.2版,否则不支持跨域处理

2:只支持 GET 方式的请求

2:请求的 URL 必需按如下例子中那样返回数据.

该方案注意利弊:

优点:

1:比用 iframe 加输出 parent.XXX() 的方案简单高效明了,前端处理更方便

2:相当 proxy 方式在编程上也简单多了

缺点:

1:必需使用jQuery,

2:返回的数据格式必需按示例样,当然不限于JSON,但它是处理最方便的.

(跨域服务器支持常规”?”查询请求的解决方案,利用JQuery的JSONP)

———————  ———————-

function fun1()

{

$.getJSON(".php?no=10&msg=ok&format=json&jsoncallback=?",

function(data){

alert(data.msg);

});

}

跨域处理

——————– .php ———————-

$no=$_GET['no'];$msg=$_GET['msg'];$json=json_encode(array('no'=>$no,'msg'=>$msg));//必需以下这样输出echo$_GET['jsoncallback'].'('.$json.')';

不知大哥你是否有更好的解决方案?有请分享一下!

更多推荐

jq跨域代理

本文发布于:2024-03-23 17:33:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740916.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:jq

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!