JQuery Ajax的使用/解决跨域 /php接收返回json与jsonp

 跨域

 出现的原因:域名,协议,端口不相同

Ajax语法

Ajax跨域解决

get :  添加  dataType:'jsonp'和 jsonp:'callbak'

post:  添加   dataType:'json' 和 crossDomain: true    ps:  dataType:jsonp只对get有效

//get 
$.ajax({
         type: "get",
   
          url: "你的请求地址",

          dataType: 'jsonp',
  
          jsonp:'callbak',
          data:{ "a":"b","c":"d"},
  
          success: function(data) {       
             console.log(data);
           },

          error: function(xhr, type) {       }
  
          });
//post
$.ajax({
            type:"post",
            url:"你的请求地址",
            data:{ 
                "a":"b",
                "c":"d"
            },
            dataType:'json',  
            crossDomain: true,    //一定要加
            success:function(result){
                console.log(result);
            },
            error:function(result){
                console.log(result);
            }
        });

 

php接收

解决跨域

 header('Access-Control-Allow-Origin: *');
 
 header('Access-Control-Allow-Methods: POST,GET');

返回json或jsonp数据通用方法

$_GET['callbak']为ajax中定义的jsonp属性,如果定义了返回jsonp数据,如果没定义返回json数据

function api_jsonp_encode($json)
    {
        if (!empty($_GET['callbak'])) {
            return $_GET['callbak'] . '(' . $json . ')'; // jsonp
        }
        return $json; // json
    }
if(isset($_GET['a'])){
  $json='{"name":"yovae","password":"12345"}';
  echo api_jsonp_encode($json);
}

php返回的数据的类型必须与js中设置的返回类型相同,否则会  触发error,虽然
返回的是 200 状态码,但并不会触发 success

 

 

 

如果您有什么不明白的地方其它想问的可以关注我的公众号,给我留言,我会尽可能的帮您解决遇到的问题

ps:如果您对摄影感兴趣,也可以关注我的公众号,不定时会分享自己的摄影经验调色设定,欢迎交流,哈哈哈哈哈

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值