码迷,mamicode.com
首页 > Web开发 > 详细

Ajax 跨域请求

时间:2015-03-18 19:55:09      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

 

客户端JQuery.ajax的调用代码示例:

$.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‘);
    }
});

 

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

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

 

 

 

var xhrurl = ‘http://localhost:8001/Ajax/ticketNotify.ashx?cu=kefu1‘;
$.ajax({
        type : "get",
        async : false,
        url :xhrurl,
        cache : false,
        dataType : "jsonp",
        jsonp: "callbackparam",
        jsonpCallback:"jsonpCallback1",
        success : function(json){
            alert(json[0].name);
        },
        error:function(e){
            alert("error");
        }
    });

 

 

服务端代码:

             String callbackFunName = context.Request["callbackparam"];
             context.Response.Write(callbackFunName + "([ { \"name\":\"John\"}])");
 

PS:客户端的jsonp参数是用来通过url传参,传递jsonpCallback参数的参数名,比较拗口,通俗点讲:

jsonp: "callbackparam"
jsonpCallback:"jsonpCallback1"

这两个参数最终会拼接在请求的url后面,变成 http://www.xxx.com/ajax/xxx.ashx?callbackparam=jsonCallback1
服务端要获取这个参数值:"jsonCallback1" ,拼接在要输出的JSON数据最前面,不然就算请求成功你也只会看到警告:
Resource interpreted as Script but transferred with MIME type text/plain:
技术分享
却看不到success定义的函数执行。



顺带一提:
在chrome浏览器里,还可以在服务端设置header信息
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
来达到跨域请求的目的,并且不需要设置ajax以下参数
dataType : "jsonp",
jsonp: "callbackparam",
jsonpCallback:"jsonpCallback1"

以正常ajax请求方式就可以获得数据。

 
 

Ajax 跨域请求

标签:

原文地址:http://www.cnblogs.com/jx270/p/4347954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!