ExtJs Ajax 跨域问题的解决办法(Jsonp)

来源:互联网 发布:numpy 矩阵列归一化 编辑:程序博客网 时间:2024/06/06 18:06

最近准备和群里的朋友做个CMS系统,采用ExtJs搭建后台,想在页面加载完后load一点官方的文章过来(其实是我的博客)。

传统的方法是这样:

Ext.Ajax.request({
    url:'http://www.xialeistudio.net/index.php?s=/Index/getNews/nums/5',
    success:function(resp,opt){
        //结果处理部分略过
    }
});
这样你认为是没有问题的,但是现实是js默认是不允许跨域的。所以会提示拒绝访问之类的


所以需要用到   Jquery的jsonp方式ajax。(Jquery库可以和ExtJS4.x共存)

$.post('http://www.xialeistudio.net/index.php?s=/Index/getNews/nums/5',
{},
function(data){
   //回调
   //这就是普通的json了
},'jsonp');
这样的话jquery会在后面加上一个callback参数,真实的请求url是

http://www.xialeistudio.net/index.php?s=/Index/getNews/nums/5&callback=jsonp
服务端



<?php
    $callback = $_GET['callback'];
    if(!empty($callback)){
        $data;//这是你业务逻辑处理好的数据,一般是个数组
        header('Content-Type:Application/json;charset=utf-8');//必须设置
        echo $callback.'('.json_encode($data).')';
        exit();
    }else{
        exit('Access Denied!');
    }
返回结果的处理跟以前一样。

0 0