ajax 访问本地数据以及跨域访问数据的写法

ajax的本地访问数据的写法,

<script>
        //这是leve 11  的写法
        // var ajax = new XMLHttpRequest();
        // var url = "./xiaohua.json"
        // ajax.open("get",url,true);
        // ajax.onreadystatechange = function(){
        //     if(ajax.readyState ==4){
        //         if(ajax.status ==200){
        //             console.log(JSON.parse(ajax.responseText));
        //         }
        //     }
        // }

        // ajax.send();

        //还有就是leve   12的写法

        var ajax = new XMLHttpRequest();

        var url = "./xiaohua.json";
        ajax.open("get", url, true);
        ajax.onload = function () {
            if (ajax.readyState == 4 && ajax.status == 200) {
                console.log(ajax.responseText);
            } else {
                console.log("您访问失败哦");
                JSON.p

            }


        }
        ajax.send();
    </script>

 

JSONP:只支持GET,不支持POST请求

JSONP原理

<body>
    <input type="text" name="" id="">
    <ul></ul>



    <script>
        var val1 = document.getElementsByTagName('input')[0];

        val1.onkeyup = function () {
          var  val = val1.value;
            var ajax = document.createElement('script');
            ajax.src =
                `https://suggest.taobao.com/sug?code=utf-8&q=${val}&_ksTS=1565073513811_1727&callback=jsonp1728`
            document.body.append(ajax)

        }

        function jsonp1728(data) {
            var ul =document.getElementsByTagName('ul')[0];
                ul.innerHTML = ''
                data.result.forEach(item => {
                    var li = document.createElement('li');
                        li.innerHTML = item[0];
                        ul.append(li);
                });  
           
                console.log(data.result);

            }
    </script>

原理为,创建一个script,用src去访问,没有跨域问题,再用一个一个回调函数接收数据。

如果没有回调函数。

就用jqurey去访问。

 <script>
            // 获取标签对象:快递公司
            var $selector=$("#company");
            // 获取快递单号
            var $postid=$("#postid");
            // 查询
            var $cx=$("#cx");

            // 给查询按钮添加点击事件
            $cx.click(function(){
                // 获取需要的数据
                var $company = $selector.val();
                var $value = $postid.val();

                // ajax 获取数据
                $.ajax({
                    url:"https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?cb=?",
                    type:"get",
                    data:{c :$company,nu:$value,appid:4001},
                    dataType:"json",
                    jsonpCallback:"success",
                    success:function(msg){
                        // 清空历史消息
                        $("#show").empty();

                        // 获取接口返回的数据
                        console.log(msg);
                        var $info = msg.data.info.context;

                        // 循环遍历数据
                        for(var i = 0; i <$info.length;i++){
                            // 获取每一笔的时间信息
                            var $time = $info[i].time;
                            $time = getTimeStr($time);

                            // 获取每一笔的快递信息
                            var $desc = $info[i].desc;

                            // 创建标签,添加到页面中
                            var $msg = $("<p>").text($time + ":" + $desc);
                            var $i = $("<i>");

                            var $kd = $("<li>");
                            $kd.append($i).append($msg);
                            // 添加到页面中
                            $("#show").append($kd);
                        } 


                    },
                    error:function(){
                        console.log("系统繁忙,查询失败");
                    }
                });
            });

            // 获取时间字符串
            function getTimeStr(dt){
                var _date = new Date(parseInt(dt*1000));
                return _date.getFullYear() + "-" + (_date.getMonth() + 1) + "-" + _date.getDate() + " " + _date.getHours() + ":" + _date.getMinutes() + ":" + _date.getSeconds();


            }
        </script>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

new 前端

请博主喝杯咖啡吧!

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

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

打赏作者

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

抵扣说明:

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

余额充值