Как вы используете PHP и JQuery получить JSONP? - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть этот 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 ]

3 голосов
/ 15 декабря 2011

Вы не устанавливаете параметр с именем 'callback', и поэтому он не устанавливается в переменных $ _GET.

Вы можете исправить сообщение об ошибке, выполнив:

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

Однако я не думаю, что вы могли неправильно понять вызов .ajax в jQuery - функция javascript, которая вызывается в случае успеха, не передается на сервер;он хранится только внутри jQuery.

1 голос
/ 15 декабря 2011

Чтобы сделать ваш вызов ajax простым, используйте метод getJson, разработанный специально для ответа JSONP.

http://api.jquery.com/jQuery.getJSON/

Это автоматически создаст имя функции обратного вызова, которая будет передана в качестве параметра в jsonp api пример со страницы:

$.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;
    });
  });
...