У меня есть php-кодированная страница на одном сервере, которая возвращает результат json. php-файл: getInfoData.php, а возврат – ниже.
echo json_encode($v);
Нет. Я могу использовать $ .getJSON (??) для чтения json и запускать все это на одном и том же уровне, но мне нужна PHP-страница, чтобы быть на другом, чем js-страница, вызывающая его.
Но тогда я получаю тогда, когда я делаю, я получаю проблему с перекрестным доменом.
Поэтому я изменил код, чтобы использовать следующее (jsonp):
$.ajax({ url: 'FILE_LOCATION_ON_ANOTHER_SERVER', type: 'GET', crossDomain: true, dataType: 'jsonp', success: function() { console.log("Success"); }, error: function() {console.log('Failed!'); } });
но я не вижу ничего, что я могу получить только с моей консолью:
http://www.THEURL.com/FOLDER/FILENAME.php?callback=jQuery171013088115444406867_1332256223342&_=1332256223343
и сообщение не получилось !.
Что я делаю неправильно и как если бы я мог это исправить?
благодаря
JSONP на самом деле не JSON. Это немного «взломать». JSONP – это фактически файл JavaScript, который загружается и запускается.
На странице PHP вам должен быть передан параметр callback
. Вам нужно «обернуть» ваш JSON. Он должен выглядеть так:
func({json: data})
Итак, ваш PHP должен выглядеть так:
echo $_GET['callback'] . '(' . json_encode($v) . ')';
Я использую это обычно, но, возможно, есть лучший способ
<?php header('content-type: application/javascript; charset=utf-8'); $data = array(1, 2, 3, 4, 5, 6, 7, 8, 9); echo htmlspecialchars($_GET['callback']) . '('.json_encode($data).')';
так как я видел, что вы предоставили параметр обратного вызова, все должно быть в порядке