Как вы используете PHP и jquery, чтобы получить jsonp?
У меня есть этот PHP:
$response = 'success';
$response = json_encode($response);
echo $_GET['callback'] . '('.$response.')';
И этот jQuery:
$.ajax({url: "/*url*/?invite="+getinvite+"&api="+api, dataType:"jsonp",
success: function(response){/*do stuff*/}});
На XAMPP на моем ноутбуке это работало отлично. Затем, когда я помещаю его на свой сервер, он выдает мне эту ошибку: Undefined index: callback
.
Почему он не позволяет мне установить $_GET['callback']
? и как бы эта проблема была решена?
2 answers
Вы не задаете параметр, называемый "обратный вызов", и поэтому он не задан в переменных $_GET.
Вы можете исправить сообщение об ошибке, выполнив:
$callback = "";
if(array_key_exists('callback', $_GET) == TRUE){
$callback = $_GET['callback'];
}
Однако я не думаю, что вы неправильно поняли вызов .ajax в jQuery - функция javascript, которая вызывается при успешном выполнении, не передается на сервер; она хранится только внутри jQuery.
Чтобы упростить вызов ajax, используйте метод getJSON, разработанный специально для ответа JSONP.
Http://api.jquery.com/jQuery.getJSON/
Это автоматически создаст имя функции обратного вызова, которое будет передано в качестве параметра вашему api jsonp. пример со страницы:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "cat",
tagmode: "any",
format: "json"
},
function(data) {
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});