将数据从json转换为JSONP不工作


Convert data into JSONP from json not working

我试图获得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);
    }
    }
          )};

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

响应无效JSONP。您可以将此添加到响应的末尾:

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

在您的PHP脚本中,代替这一行:

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

放这行:

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