2015-01-21 76 views
1

我正試圖訪問數據跨域(本地測試),但數據無法加載。使用JSONP創建回調

$.ajax({ 
    type: 'POST', 
    url: 'http://localhost/php/ajax/json.php', 
    dataType: 'jsonp', 
    data: {action: 'get_json'}, 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function() { 
     console.log("Error loading data"); 
    } 
    }); 

PHP如下所示(函數通過文件中的switch語句調用)。

function get_json() { 
    $mysqli = db_connect(); 
    $sql = "SELECT * FROM json_test"; 
    $result = $mysqli->query($sql); 

    $rows = array(); 

    if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc()) { 
     array_push($rows, $row); 
    } 
    } 

    echo $_GET['callback']."(".json_encode($rows).");"; 
} 

標題設置在PHP文檔的開頭。

header('Content-Type: application/json'); 

我收到了(如果我本身運行PHP文件)錯誤是Undefined index: callback。這個錯誤之後,json字符串可以很好地作爲文本回顯。 (我也試過echo $_POST[...])。

如何獲得此回調工作或如何正確定義它?任何幫助表示讚賞。

+0

頭部輸出不正確,被瀏覽器視爲腳本。 'jsonp'基本上是一個接收時執行的函數 – charlietfl 2015-01-21 03:00:30

回答

0

我能夠通過改變回調下面以修復PHP文件中的錯誤:

$callback = ""; 
if (array_key_exists('callback', $_GET) == TRUE) { 
    $callback = $_GET['callback']; 
} 
echo $callback."('".json_encode($rows)."');"; 

的AJAX查詢現在還檢索JSON數據成功。

0

添加此參數:

&jsoncallback=?