有没有办法在 CodeIgniter 中使用 jQuery JSONP 而不打开查询字符串?

发布于 2025-01-06 13:34:07 字数 737 浏览 3 评论 0原文

我的代码如下:

$.getJSON("http://xx.xx.x.x/directory/index.php?c=json&m=get_listing&jsoncallback=?", { action:'listings' }, function(data) {
// code
});

这工作得很好。但现在我在使用其他库时遇到了很多麻烦,这些库在启用查询字符串时不友好。如果我关闭查询字符串,并将上面的 URL 更改为:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=?

不起作用。关于解决方法有什么想法吗?

编辑:

当我关闭查询字符串并使用它时:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=?

Safari 的控制台显示以下错误:

GET http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=jQuery17102770626428537071_1329431463691?action=categories&_=1329431463695 400 (Bad Request)

My code is as follows:

$.getJSON("http://xx.xx.x.x/directory/index.php?c=json&m=get_listing&jsoncallback=?", { action:'listings' }, function(data) {
// code
});

This works just fine. But now I'm having a lot of troubles with other libraries that don't play friendly with query strings being enabled. If I turn query strings off, and change the URL above to:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=?

Doesn't work. Any ideas on a work around?

EDIT:

When I turn off query string, and use this:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=?

Safari's console shows the following error:

GET http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback=jQuery17102770626428537071_1329431463691?action=categories&_=1329431463695 400 (Bad Request)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

在风中等你 2025-01-13 13:34:07

修好了。这有效:

http://xxx.xx.x.x/directory/index.php/json/get_categories/?jsoncallback=?

Fixed it. This works:

http://xxx.xx.x.x/directory/index.php/json/get_categories/?jsoncallback=?
不忘初心 2025-01-13 13:34:07

例如,如果最后一段是 7,则 url 必须组成为:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback/7

If the last segment is for instance 7, the url must be composed as:

http://xx.xx.x.x/directory/index.php/json/get_listing/jsoncallback/7
扎心 2025-01-13 13:34:07

还有人对此感兴趣吗?
我刚刚在我的网站上进行了结合 Angular、Jsonp 和 CodeIgniter 的测试,效果非常好。
但我担心安全隐患。
如果有人对此有建议,我将不胜感激,

而不是将参数直接发送到控制器网址,如下所示:

public function getObjectJson($page=null,$limit=null,$search=null){

    if($page==null||$page<1){
        $page=1;
    }
    if($limit==null||$limit<1){
        $limit=10;
    }

    $objects=$this->Objects_model->getObjectsJson($page,$limit,$search);

    echo $objects;

}

将它们作为查询发送到网址中,并使用控制器中的相应方法:

public function getObjectsJsonp(){
    $page=$this->input->get('page');
    if($page==null||$page<1){
         $page=1;   
    }
    $limit=$this->input->get('limit');
    if($limit==null||$limit<1){
       $limit=10;
    }

    $search=$this->input->get('search');

    $objects=$this->Objects_model->getObjectsJson($page,$limit,$search);

    $var=$this->input->get('json_objectCallback');

    echo $var.$objects;
}

在我的 Angular 工厂中,URL 字符串被设置为查询

objectsApp.factory('objectsFactory', ['$http',function($http) {

return {

    getObjectsP: function(p1,p2,p3) {
        //The callback function is harcoded and the prarmeters comes from the angular controller
        return $http.jsonp("<?=base_url()?>Objects/getObjectsJsonp/?callback=json_objectCallback&page="+p1+"&limit="+p2+"&search="+p3).then(function(result) {
          objects = result.data;
          console.log(objects);
          return objects;
        });
    }

}]);

希望它有帮助。

Is someone still interested in this?
I just made a test on my website to combine Angular, Jsonp and CodeIgniter and it works great.
But i'm concerned by the security implications.
If someone have a recommendation on this i will be grateful

Instead of sendig the paramteres directly to the controller url as here:

public function getObjectJson($page=null,$limit=null,$search=null){

    if($page==null||$page<1){
        $page=1;
    }
    if($limit==null||$limit<1){
        $limit=10;
    }

    $objects=$this->Objects_model->getObjectsJson($page,$limit,$search);

    echo $objects;

}

Send them in the url as a query and get them with the respective method in the controller:

public function getObjectsJsonp(){
    $page=$this->input->get('page');
    if($page==null||$page<1){
         $page=1;   
    }
    $limit=$this->input->get('limit');
    if($limit==null||$limit<1){
       $limit=10;
    }

    $search=$this->input->get('search');

    $objects=$this->Objects_model->getObjectsJson($page,$limit,$search);

    $var=$this->input->get('json_objectCallback');

    echo $var.$objects;
}

And in my Angular factory the URL string is set as a query

objectsApp.factory('objectsFactory', ['$http',function($http) {

return {

    getObjectsP: function(p1,p2,p3) {
        //The callback function is harcoded and the prarmeters comes from the angular controller
        return $http.jsonp("<?=base_url()?>Objects/getObjectsJsonp/?callback=json_objectCallback&page="+p1+"&limit="+p2+"&search="+p3).then(function(result) {
          objects = result.data;
          console.log(objects);
          return objects;
        });
    }

}]);

Hope it helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文