http://www.3lian.com/edu/2014/02-10/127921.html
本篇文章仅仅要是对jquery ajax跨域解决方法(json方式)进行了介绍,须要的朋友能够过来參考下,希望对大家有所帮助
近期公司开发的项目中非常多地方须要跨域ajax请求,比方几个子域名下
http://a.****.com/index123.aspx,
http://b.****.com/index2.aspx 都要请求用户json信息,然后再对数据进行处理,起初我和同事们试了非常多种方法。使用$.ajax() 不管是get或post方法都会引起uri deny的错误。一番GG之后发现了解决方法。也了解当中的原因。 jquery从1.2開始,.getJSON就支持跨域操作了。使用jquery.getJSON()方法能够解决跨域问题。 实比例如以下 前台
<script type="text/javascript" src="/script/jquery.js"></script> HTML中JS代码
function gettst2() {
$.getJSON("http://ucenter.xxxx.com.cn/ajax/test.aspx? callback=?", { id: "123456", site: "01" },
function(data) {
alert(data.htmls);
document.getElementById("shows").innerHTML = data.htmls;
});
}
gettst2(); ASPX.cs文件里处理为
string jsoncall = Request.QueryString("callback");
Response.Write(jsoncall + "({htmls:測试001})"); 假设加html代码的话。千万别加/n 符号,不然会出现乱码,js 错误。

资料二:

  今天在项目中须要做远程数据载入并渲染页面。直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuery对于Ajax的跨域请求有两类解决方式,只是都是仅仅支持get方式。

各自是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。

什么是jsonp格式呢?API原文:假设获取的数据文件存放在远程server上(域名不同,也就是跨域获取数据)。则须要使用jsonp类型。使用这样的类型的话。会创建一个查询字符串參数 callback=? ,这个參数会加在请求的URL后面。server端应当在JSON数据前加上回调函数名。以便完毕一个有效的JSONP请求。意思就是远程服务端须要对返回的数据做下处理,依据client提交的callback的參数,返回一个callback(json)的数据。而client将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也相同支持jsonp的数据方式调用。

clientJQuery.ajax的调用代码演示样例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
    type
"get",
    async:false,
    url
"http://www.xxx.com/ajax.do",
    dataType
"jsonp",
    jsonp: "callbackparam",//服务端用于接收callback调用的function名的參数
    jsonpCallback:"success_jsonpCallback",//callback的function名称
    success
function(json){
        alert(json);
        alert(json[0].name);
    },
    error:function(){
        alert('fail');
    }
});

服务端返回数据的演示样例代码:

?
1
2
3
4
5
public
void ProcessRequest (HttpContext context) {
    context.Response.ContentType
"text/plain";
    String
callbackFunName = context.Request[
"callbackparam"];
    context.Response.Write(callbackFunName
"([
{ name:\"John\"}])"
);
}

资料三:

from : http://www.myquickphp.com/archives/147

(请求的跨域server不支持常规”?”查询请求时的解决方式)


昨天第一次做VIP需求时。发现一个超奇怪的问题。我有下面URL地址:
http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id>
放在浏览器地址栏中訪问能够得到正确的输出,但我一放到 AJAX 中去异步请求后用 FireBug 调试时确怎么都不出结果,和水龙兄一起调试了非常久都没有发现是什么问题,因为这个URL对方的程序是用XX框架写的,我是第一次使用这个XX框架进行开发,对它不是非常熟(有时间要研究一下它的内核源代码)。总以为是它什么地方有设置影响了的;就在我快要吐血时,乐锋(对这块比較了解的哥们)最终上线了。我把问题向他说下后,他第一反应就是:”你是不是跨域訪问了。。

OH FUCK,我和水龙一直研究程序逻辑。居然忽视了自己的当前域名,由于我当前运行请求的域名是:
http://vip.xxxxxx.com/active1/index.html
问了一下乐锋,现系统中已提供的几个方案(函数)都不太令人惬意或太烦琐了,和乐锋讨论了几种方案后,一时没有找到最好解决方式,一看时间,22:00了。天色已晚,不打搅他晚上陪老婆了!回到家里本想通过利用 iframe 来载入跨域的 url 来得到 dom 数据,研究后发现的想法太天真了,JS的安全策略跟本不同意我这样做;想通过 proxy 代理的方案,但想了一下,那比方今系统中所使用的方案更麻烦。具体研究了一下jQuery最新版关于跨域的解决方式后,最终让我研究出了一种很方便的解决方式:
例如以下是代码演示样例:
—————— http://a.com/index.html ——————-


<script type="text/javascript" src="jquery-1.4.2.js"></script>

<script type="text/javascript">

/*

AJAX跨域问题完美解决方式

研究:袁维

启发:乐锋

*/

function jsonCallBack(url,callback)

{

$.getScript(url,function(){

callback(json);

});

}

function fun1()

{

jsonCallBack('http://b.com/b.php',function(json){

alert(json.message);

})

}

</ script>

<button type="button" onclick="fun1()">跨域訪问</button>

—————— http://b.com/b.php ——————-


<?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。但它是处理最方便的.
(跨域server支持常规”?”查询请求的解决方式,利用JQuery的JSONP)
——————— http://b.com/index ———————-


<script src="jquery-1.4.2.js" type="text/javascript"></script>

<script type="text/javascript">

function fun1()

{

$.getJSON("http://a.com/c.php?no=10&msg=ok&format=json&jsoncallback=?",

function(data){

alert(data.msg);

});

}

</script>

<button type="button" onclick="fun1()">跨域处理</button>





——————– http://a.com/c.php ———————-


<?php

$no = $_GET['no'];

$msg = $_GET['msg'];

$json = json_encode(array('no'=>$no,'msg'=>$msg));

//必需下面这样输出

echo $_GET['jsoncallback'].'('.$json.')';





版权声明:本文博主原创文章,博客,未经同意不得转载。

jquery跨域请求解决方案(我们寻找,我还没有添加验证)的更多相关文章

  1. jquery跨域访问解决方案(转)

    客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解.由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算 ...

  2. Jquery跨域请求php数据(jsonp)

    Jquery跨域请求php数据 我们一般用到ajax的时候是在同服务器下,一般情况下不会跨域,但有时候需要调用其他域名或ip下的数据的时候,遇到跨域请求数据的时候. 今天在工作中碰到javascrip ...

  3. thinkphp,javascript跨域请求解决方案

    javascript跨域请求解决方案 前言 对于很多前端或者做混合开发的同学,我们难免会遇到跨域发起请求业务,比如A站点向B站点请求数据等等.由于最近要做一个站点集群的项目,所以具体业务要求很多个站点 ...

  4. jquery跨域请求数据

    jquery跨域请求数据 jquery跨越请求数据.实际开发中经常会碰到两个网站数据交互问题,当向另一个站点请求数据该如何做? 实际上非常容易,请按照下面的步骤做: 第一:编写js,通过get获取远程 ...

  5. jquery 跨域请求数据问题

    昨天参加了一个前端的面试,被问到一个跨域请求数据问题,我们之前一直用的是apicloud的api进行请求的,跨域是被apicloud封装起来的,也就没有注意跨域请求数据的问题.当被问到用jquery跨 ...

  6. cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案

    cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...

  7. ajax跨域请求解决方案

    大家好,今天我们学习了js的跨域请求的解决方案,由于JS中存在同源策略,当请求不同协议名,不同端口号.不同主机名下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理! 方案一.后台PHP进行 ...

  8. Jquery 跨域请求JSON数据问题

    制作网站时,我们有时候为了方便快捷会调用别人写好的API接口,或者是调用一些免费的API接口获得JSON数据.比如天气,农历,网站备案信息查询等. 但是,这些API接口都是别人自己服务器上的,我们要调 ...

  9. Jquery跨域请求

    在JavaScript中,有一个很重要的安全性限制,被称为“Same- Origin Policy”(同源策略).这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaSc ...

随机推荐

  1. HDU 1018-Big Number(数学)

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. iOS_24_画画板(含取色板)

    终于效果例如以下: 一.简单说明 1.使用一个数组 strokesArr(笔画数组)记录全部笔画.数组中保存的是一个个的笔画字典,一个字典就是一个笔画.笔画字典中有三项:笔画的大小.颜色.points ...

  3. uva133 The Dole Queue ( 约瑟夫环的模拟)

    题目链接: 啊哈哈,选我选我 思路是: 相当于模拟约瑟夫环,仅仅只是是从顺逆时针同一时候进行的,然后就是顺逆时针走能够编写一个函数,仅仅只是是走的方向的标志变量相反..还有就是为了(pos+flag+ ...

  4. 轻量级跨平台消息传递协议XML-RPC深度解析

    一.引言 实现跨平台通信的协议主要有简单对象訪问协议(Simple Object Access Protocol,SOAP).代表性状态传输(Representational State Transf ...

  5. URAL - 1966 - Cycling Roads(并检查集合 + 判刑线相交)

    意甲冠军:n 积分,m 边缘(1 ≤ m < n ≤ 200),问:是否所有的点连接(两个边相交.该 4 点连接). 主题链接:http://acm.timus.ru/problem.aspx? ...

  6. Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙

    原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...

  7. hadoop得知;block数据块;mapreduce实现样例;UnsupportedClassVersionError变态;该项目的源代码相关联

    对于开源的东西.特别是刚出来不久.我认为最好的学习方法是能够看到源代码,doc,样品测试 为了方便查看源代码,导入与项目相关的源代码 watermark/2/text/aHR0cDovL2Jsb2cu ...

  8. int a[5]={1,2,3,4,5};printf(&quot;%d\n&quot;, *((int*)(&amp;a+1)-2);

    有说服力的笔试题有一定的期限,问:什么是结果,答案是4,为什么要挤? 我明白(不知道是不正确): &a这是一个数组指针,类型int[5],然后&a添加1其实a+sizeof(int)* ...

  9. AspNet MVC4 教育-28:Asp.Net MVC4 Ajax技术部门四舍五入余速Demo

    A.创建一个Basic项目类型. B.于Models创建一个文件夹: DivModel.cs: using System; using System.Collections.Generic; usin ...

  10. android 反编译,反,注射LOG

    反编译smali注射显示LOG该代码.以后使用: .class public Lnet/iaround/connector/DebugClass; .super Ljava/lang/Object; ...