Это старая запись, но я все равно отправляю ответ:
Предположим, вы хотите получить код jSON, сгенерированный следующим файлом «get_json_code.php»:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
Как вы упомянули, $ .getJSON () использует JSONP, когда вы добавляете "jsoncallback =?" параметр для строки требуемого URL. Например:
$.getJSON("http://mysite.com/get_json_code.php?jsoncallback=?", function(data){
alert(data);
});
Однако в этом случае вы получите сообщение «недопустимая метка» в Firebug, потому что файл «get_json_code.php» не предоставляет допустимую ссылочную переменную для хранения возвращенной строки jSON. Чтобы решить эту проблему, вам нужно добавить следующий код в файл «get_json_code.php»:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback].
?>
Таким образом, полученный код JSON будет добавлен в переменную GET 'jsoncallback'.
В заключение, "jsoncallback =?" Параметр в URL-адресе $ .getJSON () выполняет две функции: 1) устанавливает функцию для использования JSONP вместо JSON и 2) указывает переменную, которая будет содержать код JSON, полученный из файла «get_json_code.php». Вам нужно только убедиться, что у них одинаковое имя.
Надеюсь, это поможет,
Уд.