Ajax调用在CodeIgniter中不起作用

时间:2017-07-01 16:39:29

标签: javascript php jquery ajax codeigniter

我正在尝试在CodeIgniter中测试AJAX,到目前为止没有运气。请告诉我哪里出错了。

这是我的test_page.php

<!DOCTYPE html>
<head>
    <script src="<?php echo base_url();?>assets/libs/jquery/jquery-2.2.3.min.js"></script>
    <script src="<?php echo base_url();?>assets/libs/jquery/jquery-2.2.3.min.js"></script>
    <script src="<?php echo base_url();?>assets/libs/js-cookie/js.cookie.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

<body>

<button id="btn" onclick="gethtml()">ajax Test</button>

<script type="text/javascript">
function gethtml(){
    var url = "<?php echo base_url();?>home/ajax_test";
    alert(""+url);
    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'json',
        success: function(data){
            alert("ajax success");
        }
    });
}
</script>

</body>

</html>

这是我在控制器中的功能:

public function ajax_test() {
    echo "return from ajax";
}

4 个答案:

答案 0 :(得分:0)

您可以使用下面提到的解决方案。

<button id="btn">ajax Test</button>


$(document).ready(function(){
   $('#btn').Click(function(e){
      e.preventDefault();
      var url = "<?php echo base_url();?>home/ajax_test";           
      alert(""+url);             
      $.ajax({           
            url: url,            
            type: 'POST',               
            dataType: 'json',            
            success: function(data){            
                   alert("ajax success");           
             }      
        });
    });
});

如果它不适合你,请告诉我。

答案 1 :(得分:0)

上面代码中的错误是来自ajax_test()的响应未编码到json中。因此,触发了json的错误事件,并且不执行成功内部的代码。 如果要将dataType指定为json,请务必确保发送json编码数据。

答案 2 :(得分:0)

尝试查看

<button id="btn">ajax Test</button>

<script type="text/javascript">
$('#btn').on('click', function(e) {

    // e.preventDefault(); Not sure if you need it.

    $.ajax({
        url:"<?php echo base_url('home/ajax_test');?>",
        type: 'POST',
        dataType: 'json',
        // data: {
        // someinput: $('#someinput').val()
        //},
        success: function(data){
            alert(data['test']);
        }
    });
});

</script>

在控制器上,您也可以使用输出类。

public function ajax_test() {

    $json['test'] =  "return from ajax";

    $this->output->set_content_type('application/json');
    $this->output->set_output(json_encode($json));
}

答案 3 :(得分:0)

此类型的AJAX调用dataType不是必需的

删除

dataType: 'json'

使用

<script type="text/javascript">
function gethtml(){
    var url = "<?php echo base_url();?>home/ajax_test";
    alert(""+url);
    $.ajax({
        url: url,
        type: 'POST',
        success: function(data){
            alert("ajax success");
        }
    });
}
</script>