我正在使用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请求没问题。
答案 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回调包装?