jquery中ajax跨域设置http

jquery中post的应有是无法跨域,英特网说get的能够跨域,可是小编试了一晃也拾壹分,然后就进展最终的创新优品getjson,结果成功,哈哈

明日写api遇到了跨域难题,填坑填了好久…幸亏有长辈的阅历能够借鉴!

 

本文从以下两种状态商讨ajax哀告:

js处写作

未曾跨域,设置http header尾部(举例authorization);

$.getJSON(          "/index.php/Index/test",          function(data){          alert(data.dd);          }          );

跨域,未有设置http header尾部;

语法

jQuery.getJSON(url,[data],[callback])
参数 描述
url 待载入页面的 URL 地址。
data 待发送 Key / value 参数。
callback 载入成功时执行的回调函数。

跨域,设置http header头部;

88必发官网手机版 ,php处写作:

$data[‘dd’]=’zonglonglong’;
$this->ajaxReturn($data,’JSON’);

 

那样就能够跨域的访谈了,好有趣,妈蛋让自家努力了一点次

若是照旧不行,提醒同源战术的难题,那么在服务端,php文件的话,就写上header(“access-control-allow-origin:*”);意思正是支持具有其余域的访谈,假如是内定域访谈,就把*号改为域名,如:header(“access-control-allow-origin:www.baidu.com”);


题外,php发送http请求,并设置http header头部;

Jsonp个人驾驭,参照他事他说加以考察

一.ajax央求,未有跨域,设置http header底部

$.ajax({

    type: “post”,

    url:””,

    dataType: “json”

    data: {“key”:”value”},

    // headers : {‘Authorization’:’Basic bmVvd2F5Oe4lb3dheQ==’},

    beforeSend: function(xhr) {

        xhr.setRequestHeader(“Authorization”,
“Basic bmVvd2F5Oe4lb3dheQ==”);

    },

    success: function(data){ alert(data); },

    error: function(data){ alert(“error”); } ,

});

安装header尾部有二种方法:

jquery中ajax跨域设置http。1.headers : {‘Authorization’:’Basic bmVvd2F5Oe4lb3dheQ==’}

多个底部用逗号‘,’分隔开

2.定义beforeSend方法

beforeSend: function(xhr) {

xhr.setRequestHeader(“Authorization”, “Basic bmVvd2F5Oe4lb3dheQ==”);

}

二.ajax跨域央浼,没有设置http header,

$.ajax({

    type: “post”,

    url:””,

    dataType: “jsonp”

    data: {“key”:”value”},

    // headers : {‘Authorization’:’Basic bmVvd2F5Oe4lb3dheQ==’},

    success: function(data){ alert(data); },

    error: function(data){ alert(“error”); } ,

});

劳动器端代码:

public function testpost() {

    $data = $_GET[‘key’]?$_GET[‘key’]:”123456″;

    $callback = $_GET[‘callback’];

    if(!preg_match(“/^[0-9a-zA-Z_.]+$/”,$callback)){

exit(‘参数错误!’);

    }

    echo $callback.'(‘.json_encode($data).’)’;

    exit;

}

跨域ajax访问,使用jsonp,重回数据格式如:abc({‘key’:’value’,’key2′:’value2′}),形如一个函数调用,参数为一个json数据格式

三.ajax跨域需要,设置header底部的消除办法

跨域无法直接设置header,假设跨域了还要设置http头,能够运用以下方法。

jquery达成代码如下:

$(“.get_data”).click(function() {

    var key = $(“#user”).val() + “:” + $(“#pass”).val();

    //base64编码

    var authKey = base64encode(key);

    $.ajax({

        type: ‘GET’,

        dataType: ‘json’,