JSONP в CodeIgniter - PullRequest
       25

JSONP в CodeIgniter

9 голосов
/ 16 апреля 2009

У меня проблема с использованием метода 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, он не работает. У кого-нибудь есть решение моей проблемы? Буду очень признателен, если вы дадите мне обратную связь. Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 16 апреля 2009

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

loggedin/&jsoncallback=?

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

loggedin/?jsoncallback=?

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

jsonp123( ...

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

1 голос
/ 30 июля 2011

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

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

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

1 голос
/ 01 мая 2009

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

$config['enable_query_strings'] = TRUE;
0 голосов
/ 28 июля 2011

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

$this->input->get();

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

...