2017-02-17 2 views
0

I, им работать с Ajax и Codeigniter вызова функции клиент-серверВызов Php функции управления с AJAX CodeIgniter

РНР

public function mainViewClean() { 


     unset($_SESSION[$this::jsondevices]); 
     unset($_SESSION[$this::jsontags]); 
     return "Ready"; 
    } 
//route $route['cleantags']  = 'user/mainViewClean'; 

и AJAX:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#btn_recargar").button().click(function(){ 

      //window.location.href = "<?= base_url('home')?>"; 
      $.ajax({ 
       type:'POST', 
       url:'<?php echo base_url("cleantags"); ?>', 
       data:{'id':100}, 
       success:function(data){ 
       //window.location.href = "<?= base_url('home')?>"; 
        alert(data); 
       } 
      }); 

    }); 
}); 
</script> 

Функция извинить хорошо, но javascript не показывает никаких данных, что я делаю неправильно?

ответ

1

return Изменение в:

echo "Ready"; 

Если вы отправляете массив, на стороне сервера, вам необходимо json_encode, например:

// encode array into json string format 
echo json_encode(array('name' => 'Osman')); 

И в Js, у вас есть 2 варианта, 1-й вариант:

success : function (data) { 
    // data now is coming in this form { "name" : "osman" } 
    // as the string data is coming from server-side 
    // you must parse it back into Javascript object 
    var newData = JSON.parse(data); 
} 

И второй вариант, добавьте dataType свойства внутри АЯКС свойства, такие как следующие:

$.ajax({ 
    ... 
    dataType : 'json', // with this, no need to write JSON.parse() 
    ... 
}); 
+0

Спасибо, если мне нужно отправить объект, frist Мне нужно закодировать правильно? –

+0

Да, см. Обновленный ответ –

+0

ответ для вас –

2

Ну, вызов Ajax считывает ответ от сервера, и что ответ должен быть вынесено как некоторый тип считываемых данных, таких, как application/json или text/html.

Для того, чтобы написать эти данные, вам необходимо указать echo с сервера с PHP.

Оператор return не записывает данные, он просто возвращается на уровне сервера.

Если вы хотите общаться между PHP функциями, вы должны использовать return. Но если вы хотите вывести некоторые данные, вы должны использовать echo

стороне клиента

$.ajax({ 
      url:'<?php echo base_url("cleantags"); ?>', 
      dataType: 'application/json', 
      success:function(response) 
      { 
        alert(response.foo); 
      } 
     }) 

стороне сервера

public function mainViewClean() 
    { 
     unset($_SESSION[$this::jsondevices]); 
     unset($_SESSION[$this::jsontags]); 
     echo json_encode(array("foo"=>"Ready")); 
    } 
0

Я довольно новое, как я только был используя AJAX, но я думаю, что ваш код имеет несколько синтаксических ошибок.

  • данные: {id: 100} без котировок вокруг id.

Советуем вам ознакомиться с дополнительными примерами вызовов ajax для исправления этих небольших ошибок.

Вы сказали, что ваш JS работает, но не показывает данные?

+1

Котировки, не требуемые для 'id', просто' data: {id: 100} 'достаточно, а функция' .button() 'является частью 'JQuery UI'. –

+0

Истинно, это изменяет элемент на кнопку с нажатием кнопки. и нашел его в документации – nivanmorgan