Это старый пост, но я все равно отправляю ответ:
Предположим, вы хотите получить код 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». Вам нужно только убедиться, что они имеют ОДИНАКОВОЕ ИМЯ.
Надеюсь, это поможет,
Vq.
person
vq20
schedule
04.10.2010