Codeigniter AJAX 示例

Posted

技术标签:

【中文标题】Codeigniter AJAX 示例【英文标题】:Codeigniter AJAX Example 【发布时间】:2012-12-02 22:49:52 【问题描述】:

我一直在寻找一个完整的工作示例,了解如何将 AJAX 与 Codeigniter 结合使用(我是 AJAX 新手)。我看到的帖子/tuts 都很老了——所有的编程语言都在发展。

我想在页面上有一个输入表单,它可以向页面返回一些内容(例如变量、数据库查询结果或 html 格式的字符串),而无需刷新页面。在这个简单的示例中,是一个带有输入字段的页面,它将用户输入插入到数据库中。提交输入后,我想加载不同的视图。如果我能理解如何做到这一点,我就可以对其进行调整以做我需要的任何事情(希望它也能帮助其他人!)

我的“测试”控制器中有这个:

function add()
    $name = $this->input->post('name');
    if( $name ) 
        $this->test_model->put( $name );
    


function ajax() 
    $this->view_data["page_title"] = "Ajax Test";
    $this->view_data["page_heading"] = "Ajax Test";

    $data['names'] = $this->test_model->get(); //gets a list of names
    if ( $this->input->is_ajax_request() )  
        $this->load->view('test/names_list', $data);
     else 
        $this->load->view('test/default', $data);
    

这是我的视图,名为“ajax”(所以我通过 URL www.mysite.com/test/ajax 访问它)

<script type="text/javascript">
    jQuery( document ).ready( function() 
       jQuery('#submit').click( function( e ) 
           e.preventDefault();
           var msg = jQuery('#name').val();
           jQuery.post("
               <?php echo base_url(); ?>
               test/add", name: msg, function( r ) 
                   console.log(r);
               );
           );
       );
</script>

<?php echo form_open("test/add"); ?>
<input type="text" name="name" id="name">
<input type="submit" value="submit" name="submit" id="submit">
<?php echo form_close(); ?>

目前发生的所有事情都是我输入一个输入,更新数据库并显示视图“test/default”(它不会刷新页面,但不会根据需要显示“test/names_list”。很多提前感谢您的帮助,让我摆脱痛苦!

【问题讨论】:

真的你的控制器只设置数组值。你在哪里加载你的视图? (我只将 jQuery 用于 ajax,这会将您的 js 代码减少到现在的 1/10) 这次,我推荐jquery。或者,在浏览器中打开 js 控制台,查看错误。 视图会自动加载到我的控制器中,因为我在主控制器中有此功能: // 设置默认内容视图 if ( $this->content_view !== FALSE && empty( $this->content_view) ) $this->content_view = $this->router->class . '/' 。 $this->路由器->方法; // 渲染内容视图 $yield = file_exists(APPPATH . 'views/' . $this->content_view . EXT) ? $this->load->view($this->content_view, $this->view_data, TRUE) : FALSE; 请你建议适当的 jQuery 代码来实现我在这个例子中想要做的事情?我在其他网站上尝试过的 jQuery 示例有缺陷,但我自己写得不够好 看jquery这个问题的答案:***.com/questions/12352404/… 【参考方案1】:

为表单设置唯一ID:

echo form_open('test/add', array('id'=>'testajax'));

我假设您想用视图替换表单:

jQuery(document).ready(function()
var $=jQuery;
$('#testajax').submit(function(e)
    var $this=$(this);
    var msg = $this.find('#name').val();
    $.post($this.attr('action'), name: msg, function(data) 
      $this.replace($(data));
    );
    return false;
);

如果你在 json 响应中返回视图的 url,更好的方法:

$.post("<?php echo base_url(); ?>test/add", name: msg, function(data) 
  $this.load(data.url);
,"json");


从您的上一条评论来看 - 我强烈不建议替换正文,支持此类代码将非常困难。

但这里是分析器:

$.post("<?php echo base_url(); ?>test/add", name: msg, function(data) 
      $('body').replace(data);
    );

【讨论】:

感谢您的帮助和讨论! 而不是var $=jQuery;,您可以打开将$ 作为参数传递的就绪语句,例如jQuery(document).ready(function($) :) 试试这个教程w3code.in/2015/10/…

以上是关于Codeigniter AJAX 示例的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置CI重写规则,codeigniter

CodeIgniter:将最后一个活动存储到数据库中

使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款

Codeigniter- Ajax Codeigniter Ajax - 通过ajax返回不止一行

使用 codeigniter 和 jquery 进行 AJAX 分页

Ajax 和 codeigniter 框架问题