将数据从json转换为JSONP无法正常工作

时间:2014-03-08 16:51:22

标签: php jquery ajax json jsonp

我正在尝试以jsonp格式获取数据,以便我可以使用phonegap。但是在Web浏览器上它不起作用,并且控制台中没有显示错误。显然,代码必定有问题,但是我之前从未做过jsonp如果有人可以帮忙请。 php api

function airportlist_get() {

    $this->load->database();
    $sql = 'SELECT * FROM airport order by airport;';
    $sql2 = 'SELECT COUNT(a_id) AS records FROM airport';
    $query2 = $this->db->query($sql2);
    $data2 = $query2->row();
    $info->records = intval($data2->records);
    $query = $this->db->query($sql);
    $data = $query->result();
    $info->airports = $data;
$callback = isset($_GET['callback']) ? preg_replace('/[^a-z0-9$_]/si', '',        $_GET['callback']) : false;
    header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
$json = json_encode($info);
$jsonp_callback = isset($callback) ? $json: null;
    $this->response($jsonp_callback, 200);
}

Ajax电话:

function Getairports(){
$.ajax({
        url: 'http://creative.coventry.ac.uk/~airports/airports/v1.0/index.php/airport/airportlist',
        dataType: 'jsonp',
        success: function(data) {
     $("#airportlist").empty();
        $.each(data.airports,function(i,airport){
    $('#airportlist').append('<li> <a href="#shopbyairport" data-transition="slide" onclick="Getshops('+airport.a_id+')">'+airport.airport+'</a></li>');
a_id = airport.a_id;
console.log(a_id);
});

 $.mobile.changePage("#airports"); 

 $('#airportlist').listview('refresh');
 },

 error: function (response) {
        var r = jQuery.parseJSONP(response.responseText);
        alert("Message: " +r.error.text);

    }
    }
          )};

2 个答案:

答案 0 :(得分:0)

如果您在浏览器中检查错误日志,则会在请求文件时看到语法错误。

响应无效JSONP。你在回复结束时添加了这个:

"{\"records\":2,\"airports\":[{\"a_id\":\"2\",\"airport\":\"Birmingham International\"},{\"a_id\":\"1\",\"airport\":\"Luton Airport\"}]}"

答案 1 :(得分:0)

在PHP脚本中,而不是这一行:

$jsonp_callback = isset($callback) ? $json: null;

把这一行:

$jsonp_callback = isset($callback) ? $callback . '(' . $json . ')': null;

之后应该可以使用。