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

    客户端JS:

     1 var xhrurl = 'http://localhost:8001/Ajax/ticketNotify.ashx?cu=kefu1';
     2 $.ajax({
     3         type : "get",
     4         async : false,
     5         url :xhrurl, 
     6         cache : false,
     7         dataType : "jsonp",
     8         jsonp: "callbackparam",
     9         jsonpCallback:"jsonpCallback1",
    10         success : function(json){
    11             alert(json[0].name);
    12         },
    13         error:function(e){
    14             alert("error");
    15         }
    16     });

    服务端代码:

    1             String callbackFunName = context.Request["callbackparam"];
    2             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请求方式就可以获得数据。


    
    
    
    
  • 相关阅读:
    PyCharm小技巧
    How to install torcs package in Debian
    QT4.8.6静态编译
    Debian初识(选择最佳镜像发布站点加入source.list文件)
    Dev-C++ 小问题锦集
    ubuntu 12.04lts 安装mysql ,并通过QT连接
    win7下安装ubuntu14.04lts 双系统
    cmake打印变量值
    驾车常识:小轿车灯光
    汽车点火开关的功能介绍
  • 原文地址:https://www.cnblogs.com/mahatmasmile/p/2989505.html
Copyright © 2011-2022 走看看