TP3.2.3和jQuery跨域请求源码。。。

跨域请求的原理大家都知道,本人也就不赘述了,数据传输的格式大概有XML和json等几种格式,但是相对与XML的格式来讲,他更加适用于大型数据的传输,所以本人选择使用json,来作为数据传输的格式。废话不多说,直接贴代码。。。

$url = "http://".$name."/data/text.php?callback=jQuery21405316117645496153_1494989206668&ca=archivesDomain&_=1494989206669&number=".$num;
$resd = json_decode(curl_get($url));
/*
    * url:访问路径
*/
function curl_get($url){

    $testurl = $url;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $testurl);
    //参数为1表示传输数据,为0表示直接输出显示。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //参数为0表示不带头文件,为1表示带头文件
    curl_setopt($ch, CURLOPT_HEADER,0);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
上面是PHP的跨域访问请求,使用的是curl模拟get请求,,,

$(".column").click(function () {
    $(".column").removeAttr("style");
    $(this).attr("style", "background-color: red");
    var ca = "column";
    var doamin = $(this).html();
    $.ajax({
        async: false,
        url: 'http://' + doamin + '/data/text.php',  // 跨域URL
        type: 'get',
        dataType: 'jsonp',
        jsonp: 'callback', //默认callback
        data: {"ca": ca},
        success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数
            if (json.msg == "ok") {
                var str = "";
                for (var i = 0; i < json.info.length; i++) {
                    str += "<tr>";
                    str += "<td><span class='getMore' son='" + json.info[i].id + "' cid='" + doamin + "'>+</span><a>";
                    if (json.info[i].ishidden == 1) {
                        str += "<font color='red'>[隐]</font>";
                    }
                    str += "<span class='articles' tid='" + json.info[i].id + "' eid='" + doamin + "'>" + json.info[i].typename + "</span></a>[ID:" + json.info[i].id + "]";
                    if (json.info[i].ispart == 0) {
                        str += "(文档:" + json.info[i].count + ")";
                    }
                    str += "</td>";
                    str += "<td>";
                    str += "<a><i class='fa fa-pencil-square-o'></i></a>&nbsp;&nbsp;&nbsp;";
                    str += "<a><i class='fa fa-trash-o delete' deid='"+json.info[i].id+"' doid='"+doamin+"'></i></a>";
                    str += "</td>";
                    str += "</tr>";
                }
                $("tbody").html(str);
            }
        }
    });
});
这边是jQuery的,JSONP的运行原理不清楚的可以自己百度一下,本人在这里就不赘述了。。。

以为我这边封装的东西不能用函数的形式,所以只好用判断的方式来返回数据。。。

$link = mysqli_connect(
    $cfg_dbhost,  /* The host to connect to 连接MySQL地址 */
    $cfg_dbuser,      /* The user to connect as 连接MySQL用户名 */
    $cfg_dbpwd,  /* The password to use 连接MySQL密码 */
    $cfg_dbname);    /* The default database to query 连接数据库名称*/

if (!$link) {
    printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());
    exit;
}

$ca = $_GET["ca"];
$callback = isset($_GET['callback']) ? trim($_GET['callback']) : '';

$test = array();
$arra = array();
$list = array();
$array = array();
if($ca == "column"){
    //获取栏目列表和栏目下文章数量
    if(empty($cfg_dbprefix)){
        $column = 'select * from arctype where topid = 0';
        $model = mysqli_query($link, $column);
        while ($datas =  mysqli_fetch_assoc($model)) {
            $array[] = $datas;
        }

        foreach ($array as $kas => $vas) {
            if ($res = mysqli_query($link, "select * from archives where typeid = ". $vas['id'])) {
                /* Fetch the results of the query 返回查询的结果 */
                while ($rows = mysqli_fetch_assoc($res)) {
                    $test[$kas][] = $rows;
                }
            }
            @$array[$kas]['count'] = count($test[$kas]);
        }
        $tmp['msg'] = "ok";
        $tmp['info'] = $array;
        echo $callback."(".json_encode($tmp).")";
    }else{
        $column = 'select * from '.$cfg_dbprefix.'arctype where topid = 0';
        $model = mysqli_query($link, $column);
        while ($datas =  mysqli_fetch_assoc($model)) {
            $array[] = $datas;
        }

        foreach ($array as $kas => $vas) {
            if ($res = mysqli_query($link, "select * from '.$cfg_dbprefix.'archives where typeid = ". $va['id'])) {
                /* Fetch the results of the query 返回查询的结果 */
                while ($rows = mysqli_fetch_assoc($res)) {
                    $test[$kas][] = $rows;
                }
            }
            @$array[$kas]['count'] = count($test[$kas]);
        }
        $tmp['msg'] = "ok";
        $tmp['info'] = $array;
        echo $callback."(".json_encode($tmp).")";
    }
}else if($ca == "columnSon"){
    $did = $_GET['did'];
    //获取子栏目
    if(empty($cfg_dbprefix)){
        $colum = 'select * from arctype where reid = '.$did;
        $mode = mysqli_query($link, $colum);
        while ($dat =  mysqli_fetch_assoc($mode)) {
            $arra[] = $dat;
        }

        foreach ($arra as $k => $v) {
            if ($re = mysqli_query($link, "select * from archives where typeid = ". $v['id'])) {
                /* Fetch the results of the query 返回查询的结果 */
                while ($row = mysqli_fetch_assoc($re)) {
                    $test[$k][] = $row;
                }
            }
            $arra[$k]['count'] = count($test[$k]);
        }
        if(!empty($arra)){
            $tmp['msg'] = "ok";
            $tmp['info'] = $arra;
            echo $callback."(".json_encode($tmp).")";
        }else{
            $tmp['msg'] = "no";
            $tmp['info'] = "宝宝心情不好,不想给你数据...";
            echo $callback."(".json_encode($tmp).")";
        }
    }else{
        $colum = 'select * from '.$cfg_dbprefix.'arctype where reid = '.$did;
        $mode = mysqli_query($link, $colum);
        while ($dat =  mysqli_fetch_assoc($mode)) {
            $arra[] = $dat;
        }

        foreach ($arra as $k => $v) {
            if ($re = mysqli_query($link, "select * from '.$cfg_dbprefix.'archives where typeid = ". $v['id'])) {
                /* Fetch the results of the query 返回查询的结果 */
                while ($row = mysqli_fetch_assoc($re)) {
                    $test[$k][] = $row;
                }
            }
            $arra[$k]['count'] = count($test[$k]);
        }
        if(!empty($arra)){
            $tmp['msg'] = "ok";
            $tmp['info'] = $arra;
            echo $callback."(".json_encode($tmp).")";
        }else{
            $tmp['msg'] = "no";
            $tmp['info'] = "宝宝心情不好,不想给你数据...";
            echo $callback."(".json_encode($tmp).")";
        }
    }
}
那个什么,callback可以自定义,jQuery会自动生成,相当于token验证,所以传回来的数据必须包含这类数据,,,,

大体就这么多,样式和结构比较简单,大家可以一起来探讨一下。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值