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



我正在使用Phil Sturgeon的CodeIgniter RESTful接口https://github.com/philsturgeon/codeigniter-restserver,它似乎工作得很完美。

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

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

但是当我替换我的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/microonews/community/db/mydb/city/mycity/format/json/?callback=jQuery151029825189273083685_1310236439746&_=1310236439748和一个200的响应。

从浏览器直接点击该页面返回json编码的数据。

由于GET参数在URL字符串中,因此CodeIgniter没有正确配置应该不会成为问题。访问日志似乎表明GET请求没有问题。

解决方案为我工作:在application/config/config.php中进行以下更改:

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

我想这就是安全过滤功能起作用的原因。

在调用新控制器时自动调用安全过滤功能。它执行以下操作:

如果$config['allow_get_array']为FALSE(默认为TRUE),将破坏全局GET数组。

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

所以,尝试$config['allow_get_array'] = TRUE或使用Post方法

试试:

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

为什么不只是使用$.ajax(),然后你可以通过crossDomain:true而不是担心json回调包装?

相关内容

  • 没有找到相关文章

最新更新