u011218527
阿琛Bonnie
采纳率15.4%
2016-05-20 04:39 阅读 2.6k

关于jsonp获取数据的问题

5

我现在找到了一个可以查询快递信息的jsonp接口http://api.open.baidu.com/pae/channel/data/asyncqury?cb=回调函数&appid=4001&com=快递公司&nu=快递单号

先不给回调函数,查询示例如下http://api.open.baidu.com/pae/channel/data/asyncqury?cb=&appid=4001&com=zhongtong&nu=402364452772

这样得到的确实是标准的json数据(各位可以点击上面的地址去看看)。

但是我用jsonp却只能得到该数据的前两个属性,第三个属性就为undefined了。我的代码如下:

    var  queryStr="http://api.open.baidu.com/pae/channel/data/asyncqury?cb=handleResponse&appid=4001&&com=zhongtong&nu=402364452772";
  var script=document.createElement("script");
  script.src=queryStr;
  document.body.insertBefore(script,document.body.lastChild);

        function handleResponse(response) {
            console.log(response);
  }

理论上打印出的这个response应该就是完整的快递信息json对象,然而得到的却只有该对象前两个属性。请教各位这是哪里出了问题?


谢谢各位,现在发现用HTML文档运行这段代码确实没有任何问题。但是我这个项目是用smarty模板写的,是用php打开这个html文档的,这样就不能得到正确结果了。。。是php不支持jsonp还是smarty不支持jsonp?求教~

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • rui888 兔子托尼啊 2016-05-20 05:30

    图片说明

    看的正常啊。

    点赞 评论 复制链接分享
  • cn_oo cn_oo 2016-08-22 06:08

    我给你一个基于PHP的查询快递物流信息的API接口

    1.KuaidiAPI.php

    <?php
    /**

    • Created by http://www.kuaidi.com
    • User: kuaidi.com PHP team
    • Date: 2016-03-02
    • 物流信息查询接口SDK
    • QQ: 2885643506
    • Version 1.0 */

    class KuaidiAPI{

    private $_APPKEY = ''; 
    
    private $_APIURL = "http://highapi.kuaidi.com/openapi-querycountordernumber.html?";
    
    private $_show = 0;
    
    private $_muti = 0;
    
    private $_order = 'desc';
    
    /**
     * 您获得的快递网接口查询KEY。
     * @param string $key
     */
    public function KuaidiAPi($key){
        $this->_APPKEY = $key;
    }
    
    /**
     * 设置数据返回类型。0: 返回 json 字符串; 1:返回 xml 对象
     * @param number $show
     */
    public function setShow($show = 0){
        $this->_show = $show;
    }
    
    /**
     * 设置返回物流信息条目数, 0:返回多行完整的信息; 1:只返回一行信息
     * @param number $muti
     */
    public function setMuti($muti = 0){
        $this->_muti = $muti;
    }
    
    /**
     * 设置返回物流信息排序。desc:按时间由新到旧排列; asc:按时间由旧到新排列
     * @param string $order
     */
    public function setOrder($order = 'desc'){
        $this->_order = $order;
    }
    
    /**
     * 查询物流信息,传入单号,
     * @param 物流单号 $nu
     * @param 公司简码 $com 要查询的快递公司代码,不支持中文,具体请参考快递公司代码文档。
     * @throws Exception
     * @return array
     */
    public function query($nu, $com=''){
        if (function_exists('curl_init') == 1) {
    
            $url = $this->_APIURL;
    
            $dataArr = array(
                'id' => $this->_APPKEY,
                'com' => $com,
                'nu' => $nu,
                'show' => $this->_show,
                'muti' => $this->_muti,
                'order' => $this->_order
            );
    
            foreach ($dataArr as $key => $value) {
                $url .= $key . '=' . $value . "&";
            }
    
            // echo $url;
    
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_TIMEOUT, 10);
            $kuaidresult = curl_exec($curl);
            curl_close($curl);
    
            if($this->_show == 0){
                $result = json_decode($kuaidresult, true);
            }else{
                $result = $kuaidresult;
            }
    
            return $result;
    
        }else{
            throw new Exception("Please install curl plugin", 1); 
        }
    }
    

    }

    
    

    2.example.php
    <?php

    include 'KuaidiAPI.php';

    //修改成你自己的KEY
    $key = 'c684ab43a28bc3caea53570666ce9762';

    $kuaidichaxun = new KuaidiAPi($key);

    //设置返回格式。 0: 返回 json 字符串; 1:返回 xml 对象
    //$kuaidichaxun->setShow(1); //可选,默认为 0 返回json格式

    //返回物流信息条目数。 0:返回多行完整的信息; 1:只返回一行信息
    //$kuaidichaxun->setMuti(1); //可选,默认为0

    //设置返回物流信息排序。desc:按时间由新到旧排列; asc:按时间由旧到新排列
    //$kuaidichaxun->setOrder('asc');

    //查询
    $result = $kuaidichaxun->query('111111', 'quanfengkuaidi');

    //带公司短码查询,短码列表见文档
    //$result = $kuaidichaxun->query('111111', 'quanfengkuaidi');

    //111111 快递单号
    //quanfengkuaidi 快递公司名称

    var_dump($result);

    
    

    使用说明:
    1.KuadidiAPI.php 不需要修改改任何东西
    2.example.php 按照说明使用
    3.快递公司代码见快递公司代码技术文档(快递公司代码文档下载地址:https://pan.baidu.com/s/1qYtikSs)

    点赞 评论 复制链接分享

相关推荐