zoukankan      html  css  js  c++  java
  • Ajax 跨域请求

    客户端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请求方式就可以获得数据。

     
     
  • 相关阅读:
    for是个什么玩意
    面向对象 多态
    面向对象 接口
    面向对象oop
    面向对象基本
    java修饰符的作用范围
    static 关键字介绍
    JsonLayout log4j2 json格式输出日志
    多线程--Thread.join方法
    idea常用实用快捷键
  • 原文地址:https://www.cnblogs.com/jx270/p/4347954.html
Copyright © 2011-2022 走看看