jquery .getJSON不从CodeIgniter REST接口获取任何数据

时间:2011-07-09 14:51:44

标签: jquery codeigniter rest cross-domain

我正在使用Phil Sturgeon的RESTI接口进行CodeIgniter https://github.com/philsturgeon/codeigniter-restserver,它看起来完美无瑕。

在另一台服务器上,我正在尝试使用jQuery来检索json数据。

首先,我通过使用jQuery文档中的flickr示例来检查我的js是否搞砸了。这工作正常。

但是当我替换我的网址时,我似乎没有得到任何回应。

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

外部服务器上的访问日志显示对/ apps / api / micronews / community / db / mydb / city / mycity / format / json /?callback = jQuery151029825189273083685_1310236439746& _ = 1310236439748和200响应的GET请求。 / p>

直接从浏览器访问该页面将返回json编码数据。

由于GET参数位于URL字符串中,因此CodeIgniter配置不正确不应该是一个问题。访问日志似乎表明GET请求没问题。

4 个答案:

答案 0 :(得分:1)

解决方案对我有用: 在application/config/config.php进行以下更改:

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

拯救我的夜晚!

答案 1 :(得分:1)

我猜这就是安全过滤功能的原因。

  

调用新控制器时会自动调用安全筛选功能。它执行以下操作:

     
    

如果$ config ['allow_get_array']为FALSE(默认为TRUE),则销毁全局GET数组。

  

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

因此,请尝试$config['allow_get_array'] = TRUE或使用Post方法。

答案 2 :(得分:0)

尝试使用:

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

答案 3 :(得分:0)

为什么不使用$.ajax()然后你可以传入crossDomain:true而不是担心jsonp回调包装?