Codeigniter 和 jquery Ajax

Posted

技术标签:

【中文标题】Codeigniter 和 jquery Ajax【英文标题】:Codeigniter & jquery Ajax 【发布时间】:2017-06-19 17:56:48 【问题描述】:

我无法使用ajax在数据库中通过表单插入数据,没有firebug错误有人可以帮助我

查看:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Blog</title>
	<link rel="stylesheet" href="<?php echo base_url("assets/css/bootstrap.min.css"); ?>">
</head>
<body>
	<h3 style="text-align: center;">CODEIGNITER AJAX</h3>
	<div class="row">
		<div class="alert alert-success" id="message" style="display: none;">
		</div>
		<div class="col-md-4"></div>
		<div class="col-md-4">
			<?php echo form_open('blog_c',array('id'=>'myForm'));?>
				<div class="form-group">
					<label>EMAIL:</label>
					<input type="text" name="email" id="email" class="form-control" placeholder="EMAIL">
				</div>
				<input type="submit" value="ENVOYER" id="btn">
			<?php echo form_close()?>
		</div>
	</div>
	<script type="text/javascript" src="<?php echo base_url()?>assets/js/jquery-3.1.1.js"></script>
	<script type="text/javascript">
		$(document).ready(function()	
			$('#btn').click(function()
				var email=$('#email').val();
				$.ajax(              //request ajax
					url:"<?php echo site_url('blog_c/registre')?>",
					type:POST,
					data:email:email,
					dataType:json,
					 success: function(repons) 
                   		 $("#message").html(repons);
                   		
               			 ,
	               	 error: function() 
	                    alert("Invalide!");
	                	
				);
			);
		);
		
	</script>
</body>
</html>

型号:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Blog_m extends CI_Model

	function __construct()
	 
	    parent:: __construct();
	  
	 function registre($data)
	
		$this->db->insert('utilisateurs',$data);
	 

控制器:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Blog_c extends CI_Controller 

	public function __construct()
	
		parent::__construct();
		
	

	public function index()
	
		$this->load->view('blog_w');
	

	public function registre()
	
		// set rules
	$this->form_validation->set_rules('email','EMAIL','trim|required|valid_email|is_unique[utilisateurs.email]');
	if($this->form_validation->run()==FALSE)
		
			echo validation_errors();
		else
			$data=array(
				'email'=>$this->input->post('email'));
			$this->blog_m->registre($data);
			

			echo "<div class='alert'>Inscription success</div>";
			echo "email";
		
	

没有错误但是数据没有插入数据库,也没有成功信息。

【问题讨论】:

您是否检查了请求以检查是否正在发送正确的表单数据,以及正在接收哪些标头? 您可能在错误日志中收到了 PHP 错误,并且 Codeigniter 或 php.ini 可能被配置为不显示 php 错误,否则会回显 html,无论是验证错误还是成功, 将被 jQuery 选择并显示在消息 div 中 微笑,我收到了 200 毫秒 ok 【参考方案1】:

试试这个。

在视图中(AJAX 部分)

<script>
    $(function()
        $( "#btn" ).click(function(event)
        
            event.preventDefault();
            var email= $("#email").val();

            $.ajax(
                
                    type:"post",
                    url: "<?php echo base_url(); ?>index.php/blog_c/registre",
                    data: email:email,
                    success:function(response)
                    
                        console.log(response);
                        $("#message").html(response);
                        $('#cartmessage').show();
                    
                    error: function() 
                    
                        alert("Invalide!");
                    
                
            );
        );
    );
</script>

在控制器中

public function registre()


    $email = $this->input->post('email'); # add this

    $this->form_validation->set_rules('email','EMAIL','trim|required|valid_email|is_unique[utilisateurs.email]');

    if($this->form_validation->run() == FALSE)
    
        echo validation_errors();
    
    else
                   
        if(!$this->blog_m->registre($email))
        
            echo "Something Went Wrong";
                       
        else
        
            echo "Inscription success";
        

    


在模型中

function registre($email)

    $data = array(
                'email'=>$this->input->post('email')
            );

    $this->db->insert('utilisateurs',$data);
 

【讨论】:

【参考方案2】:

首先在您的控制器加载模型中。像这样..

public function __construct()
    
        parent::__construct();
        $this->load->helper(array('form','url'));//loads required heplers
        $this->load->model('blog_m');//loads your model 
    

鉴于:您正在使用 ajax 所以设置表单action empty.Like this..

<?php echo form_open('',array('id'=>'myForm'));?>

【讨论】:

你认为encode json没有问题

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

无法使用 jquery 和 ajax 删除多个用户(codeigniter 3)

为啥我通过 jquery ajax 和 codeigniter 得到验证错误?

Codeigniter 图片上传使用 jquery 和 ajax 错误 [重复]

在这个例子中,让 jQuery/Ajax 与 CodeIgniter 一起工作的最佳方法是啥?

codeigniter php 和 jquery - 如何从多个表中获取数据并通过 ajax 返回

在 CodeIgniter 中通过 jQuery AJAX 插入和移动多个图像 [重复]