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

    第一种方式

    客户端JS:

     1         function httpRequest(arg,successCallback,errorCallback){
     2               $.ajax({
     3                   type: "get",
     4                   url:serverAddress,
     5                   async: false, //是否为同步or 异步,默认同步(true)
     6                   cache:false, //请求格式为jsonp ,script默认为false ,其它为true ,  这里可以不用添加
     7                   data:arg,      //请求参数,也可以拼接在url后边
     8                   dataType: "jsonp",
     9                   jsonp:"callback",
    10                   jsonpCallback :"jsoncallback",
    11                   timeout : set_Timeout,         //超时处理
    12                   success : successCallback,       //成功回调
    13                   error : errorCallback            //错误回调
    14               })
    15           }

    //调用

    var arg = {name:'zs'}
    httpRequest(arg,succCallback,errCallback);

    function succCallback(msg){
    //msg返回一个对象,解析JSON格式
    }

    function errCallback(){
    //fail msg
    }


    服务器端代码

     String callbackFunName = context.Request["callback"];  //jsonp :callback 对应的值,默认不写就是callback
    
     context.Response.Write(callbackFunName + "(" +{ 'name':'John'}+")");
    

     

    jsonp: "callback"
    jsonpCallback:"jsonpCallback"

    这两个参数最终会拼接在请求的url后面,变成 http://www.xxx.com/ajax/xxx.ashx?callback=jsonCallback

    ps:注意:这种方式需要客户端与服务器端 ,同时调整下数据请求方式及服务器响应。

    第二种方式

         PHP 解决跨域 ,在文件头加下边这两句代码,JS 就不需要JSONP。

    header("Access-Control-Allow-Origin: *");
    header('content-type:application/json;charset=utf8');  
    

      

    java 解决跨越

    xxx.setContentType("application/json; charset=utf-8"); 
     
    xxx.getResponse().addHeader("Access-Control-Allow-Origin","*");//'*'表示允许所有域名访
    
    or
    
    
    /*这里可以忽略*/ 服务器端要使用 request.getParameter("jsonpCallback");//客户端请求参数 out.println(jsonpCallback+"("+resultJSON(data)+")");//返回jsonp

      

  • 相关阅读:
    接口默认值引发Qt调用DLL异常
    360杀毒引发的DLL调用异常
    VS2012基于QT5.1自定接口及插件并实现动态加载
    Qt调用C的DLL
    Qt动态多语言的实现(VS2012开发)
    Qt在VS2012中引用QtWidgets时报GLES2/gl2.h无法打开错误的解决办法
    php判断某字符串是否不以数字或其他特殊字符开头
    mysql的数据类型int、bigint、smallint 和 tinyint取值范围
    28个jQuery性能优化的建议
    主题:iframe高度的自适应
  • 原文地址:https://www.cnblogs.com/congxueda/p/5074198.html
Copyright © 2011-2022 走看看