Создание обратного вызова с 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[...] также).

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

1

Решение

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

&jsoncallback=?
0

Другие решения

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

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

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

0

По вопросам рекламы [email protected]