Есть ли способ использовать JQuery JSONP в CodeIgniter без включения строк запроса? - PullRequest
2 голосов
/ 17 февраля 2012

Мой код выглядит следующим образом:

$.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=?

Не работает. Есть идеи по поводу работы?

EDIT:

Когда я отключаю строку запроса и использую это:

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)

Ответы [ 3 ]

1 голос
/ 17 февраля 2012

Исправлено. Это работает:

http://xxx.xx.x.x/directory/index.php/json/get_categories/?jsoncallback=?
0 голосов
/ 01 февраля 2016

Кто-то до сих пор в этом заинтересован?
Я только что проверил на своем веб-сайте тест на объединение Angular, Jsonp и CodeIgniter, и он отлично работает.Но я обеспокоен последствиями для безопасности.
Если у кого-то есть рекомендации по этому поводу, я буду благодарен

Вместо отправки параметров непосредственно на URL контроллера, как здесь:

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;

}

Отправьте их в URL как запрос и получите их соответствующим методом в контроллере:

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

}]);

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2012

Если последний сегмент, например, 7, URL должен быть составлен как:

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