2015-01-21 2 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[...]).

Как я могу заставить этот callback работать или как его правильно определить? Любая помощь приветствуется.

+0

заголовок не подходит для вывода, который считается сценарием браузером. 'jsonp' - это в основном функция, которая выполняется при получении – charlietfl

ответ

0

я смог исправить ошибку в файле PHP, изменив функцию обратного вызова к следующему:

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

Запрос AJAX теперь также извлекает данные JSON успешно.

0

добавить этот параметр:

&jsoncallback=? 
Смежные вопросы