JSONP в CodeIgniter

У меня проблема с использованием метода jQuery JSONP $.getJSON в CodeIgniter. URL-адрес, с которого загружается JSON, следующий:

http://spinly.000space.com/index.php/admin/isloggedin  

Проблема в том, что у меня есть файл demo.html, который запускает метод $.getJSON и получает данные с указанного выше URL-адреса.

demo.html:

<html>
<head>
  <script src="http://www.spinly.000space.com/public/js/jquery.js"></script>

  <script>
  $(document).ready(function(){
  var myurl = "http://spinly.000space.com/index.php/admin/isloggedin/&jsoncallback=?";

    //myurl = "http://com.lnk.bz/jsonp.php?sleep=3&jsoncallback=?";
    $.getJSON(myurl,function(adat) {
        alert(adat);
     //   clearTimeout(t);
    }); 

  });
  </script>
</head>
<body>
  <div id="images">
  </div>
</body>
</html>

Когда я запускаю demo.html ничего не происходит. Как вы можете видеть, он должен предупреждать о возвращаемых данных, когда я изменяю URL-адрес на другой, который не использует CodeIgniter в качестве основы. У меня работает функция оповещения, но в этом случае при использовании URL-адреса, резервная копия которого создана с помощью CodeIgniter, она не работает. У кого-нибудь есть решение моей проблемы? Я был бы очень признателен, если бы вы дали мне некоторые отзывы. Заранее спасибо!


person Emil Hajric    schedule 15.04.2009    source источник
comment
ищу хороший способ реализовать jsonp в CI...   -  person Vamsi Krishna B    schedule 27.07.2011
comment
Прежде чем подробнее рассказать, можете ли вы указать, какую версию CI вы используете, и это Core или Reactor?   -  person toopay    schedule 27.07.2011
comment
Этот URL больше не работает.   -  person Amir Raminfar    schedule 02.08.2011


Ответы (4)


Амперсанд в вашем URL-адресе неверен:

loggedin/&jsoncallback=?

Это должно быть что-то вроде

loggedin/?jsoncallback=?

Запуск, который я получаю ответ

jsonp123( ...

Это означает, что он пытается вызвать функцию jsonp123, а адатная часть вашего кода на данный момент никогда не используется.

person postpostmodern    schedule 15.04.2009
comment
постпостмодерн: я изменил код, и теперь spinly.000space.com/index. php/admin/isloggedin отображает {title:user online,user:{online:yes}} и все равно не работает. - person Emil Hajric; 16.04.2009
comment
Метод getJson создает новую функцию, которая заменяется вашим URL-адресом, и при отправке она выглядит примерно так: эхо $cb; эхо '({тест: правда})'; Это немного сбивает с толку. - person postpostmodern; 16.04.2009

По умолчанию CI не разрешает строки запросов, поэтому вы включили enable_query_strings в своем config.php?

$config['enable_query_strings'] = TRUE;
person Community    schedule 01.05.2009

Я думаю, что проблема, с которой вы столкнулись, связана с ограничением браузеров на запрет междоменных запросов. Я предполагаю, что вы размещаете свое приложение в каком-то другом домене/поддомене, и именно это вызывает эту проблему.

Вам нужно использовать JSONP, то есть Json с дополнением. Подробности здесь: http://en.wikipedia.org/wiki/JSONP

Посмотрите на jsonp в jquerys ajax api здесь: http://api.jquery.com/jQuery.ajax/ и посмотрите, решит ли это вашу проблему.

person Baz1nga    schedule 30.07.2011

Также убедитесь, что в config.php для параметра $config['allow_get_array'] установлено значение TRUE. Это позволит вам использовать

$this->input->get();

в ваших контроллерах.

person CyberJunkie    schedule 28.07.2011