我一直在找一个礼拜的完整示例,以了解如何在Codeigniter中使用AJAX(我是AJAX新手)。我见过的帖子/教程很老-所有编程语言都在发展。
我想在页面上有一个输入表单,该表单可以向页面返回一些内容(例如,变量,数据库查询结果或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”。非常感谢。寻求帮助,让我摆脱痛苦!
将唯一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); });