标签:jquery ajax
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 错误。
资料二:
什么是jsonp格式呢?API原文:如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。
客户端JQuery.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
,我和水龙一直研究程序逻辑,竟然忽视了自己的当前域名,因为我当前执行请求的域名是:
<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>
<?php
$ary = array(‘result‘=>0,‘message‘=>‘跨域成功‘);
$json = json_encode($ary);
//一定要这样定义输出最后的JSON数据,这是利用JS的闭包特性
echo "var json=$json;";
?>
<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>
<?php
$no = $_GET[‘no‘];
$msg = $_GET[‘msg‘];
$json = json_encode(array(‘no‘=>$no,‘msg‘=>$msg));
//必需以下这样输出
echo $_GET[‘jsoncallback‘].‘(‘.$json.‘)‘;
jquery跨域请求解决方案(都是从网上找的,本人未加验证)
标签:jquery ajax
原文地址:http://blog.csdn.net/ztt_1119/article/details/41962087