jquery .getJSON не получает никаких данных из интерфейса CodeIgniter REST. - PullRequest
1 голос
/ 09 июля 2011

Я использую RESTful-интерфейс Фила Стерджена для CodeIgniter https://github.com/philsturgeon/codeigniter-restserver, и он работает безупречно.

На другом сервере я пытаюсь использовать jQuery для получения данных json.

Сначала я проверил, не испортился ли мой js, используя пример flickr в документации по jQuery. Это сработало правильно.

Но когда я заменяю свой URL, я не получаю никакого ответа.

         $.getJSON("http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/?jsoncallback=?",
          function(data) {
            console.log ('show me the data');
          });

Я также пробовал эквивалентный запрос ajax:

$.ajax({
  url: "http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/",
  dataType: 'jsonp',
  success: function(results){
  console.log(results);
  }
});

Журнал доступа на внешнем сервере показывает запрос GET для / apps / api / micronews / community / db / mydb / city / mycity / format / json /? Callback = jQuery151029825189273083685_1310236439746 & _ = 1310236439748 и ответ 200.

При попадании на эту страницу непосредственно из браузера возвращаются данные, закодированные в формате json.

Поскольку параметры GET находятся в строке URL, это не должно быть проблемой, если CodeIgniter не настроен должным образом. И журнал доступа, кажется, говорит, что запрос GET в порядке.

Ответы [ 4 ]

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

Полагаю, именно поэтому функция фильтрации безопасности сработала.

Функция фильтрации безопасности вызывается автоматически при вызове нового контроллера. Это делает следующее:

Если $ config ['allow_get_array'] равен FALSE (по умолчанию TRUE), уничтожает глобальный массив GET.

http://codeigniter.com/user_guide/libraries/input.html

Итак, попробуйте $config['allow_get_array'] = TRUE или используйте метод Post.

1 голос
/ 06 октября 2011

Решение для меня работает: В application/config/config.php внесите следующие изменения:

$config['uri_protocol'] = "PATH_INFO";
$config['enable_query_strings'] = TRUE

Спаси мою ночь!

0 голосов
/ 09 июля 2011

Почему бы просто не использовать $.ajax(), и тогда вы можете передать crossDomain:true вместо того, чтобы беспокоиться об оболочках обратного вызова jsonp?

0 голосов
/ 09 июля 2011

Попробуйте использовать это:

 $.getJSON("http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/?callback=?",
  function(data) {
    console.log ('ready to handle data');
  });
...