使用AJAX Codeigniter调用Php控制器功能

时间:2017-02-17 20:17:08

标签: javascript php jquery ajax codeigniter

我,我正在使用Ajax和Codeigniter来调用函数client-server

php

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没有显示任何数据,我做错了什么?

3 个答案:

答案 0 :(得分:2)

嗯,ajax调用会从服务器读取响应,并且该响应必须呈现为某种类型的可读数据,例如application/jsontext/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"));
   }

答案 1 :(得分:1)

return更改为:

echo "Ready";

如果您要发送阵列,则在服务器端需要json_encode,例如:

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

在Js中,您有2个选项,第一个解决方案是:

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

第二个选项是,在ajax属性中添加dataType属性,如下所示:

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

答案 2 :(得分:0)

我很新,因为我一直在使用AJAX,但我认为你的代码有一些语法错误。

  • 数据:{id:100},ID周围没有引号。

我建议你需要查看更多的ajax调用示例来修复这些小错误。

你说你的JS工作但没有显示数据?