簡體   English   中英

使用ajax提交表單后無法顯示消息

[英]Not able to display message after submitting form using ajax

我正在嘗試使用CodeIgniter AJAX提交表單。 表單的值已保存在數據庫中,但在控制器中設置的回復未在console.log顯示或在AJAX代碼中顯示為alert

形式代碼

<form class="form-signup" id="signup-form" method="post">
    <input type="email" class="form-control" placeholder="Email" name="email" id="email">
    <input type="password" class="form-control" placeholder="Password" name="password" id="password">
    <button type="submit" class="btn btn-primary btn-lg btn-signup col-sm-offset-1" id="submit_form">SIGN UP</button>
</form>

腳本代碼

<script type="text/javascript">
    $(document).ready(function() {
        $("#submit_form").click(function(event) {
        event.preventDefault();
        var email = $("input#email").val();
        var password = $("input#password").val();
        jQuery.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>" + "student/register",
        dataType: 'json',
        data: {email: email, password: password},
        success: function(res) {
        if (res)
            {
                console.log(res); //need to print the result here
                //alert(res);
            }
        }
        }); 
   });  
});

控制器代碼

public function register()
{
     $data = array(
          'email' => $this->input->post('email'),
          'password'=>$this->input->post('password')
     );

     $email = $data['email'];
     $password = $data['password'];

     $this->db->where('email',$email);
     $query = $this->db->get('student'); 
     if ($query->num_rows() > 0)
     {
         echo "Email already exist";
     }
     else
     {
        $data1=array(
            'email' => $email,
            'password' => md5($password)
        );

        $final=$this->signin_model->register_user($data1);
        return $final;     
     }   
}

型號代碼

public function register_user($data1)
{        
     $success=$insert_data = $this->db->insert('student', $data1);
     if($success)
     {
         $result= "success ";
     }
     else
     {
         $result= "register unsuccessful";
         return $result;           
     }
 }

如代碼中所示,有3條消息

電子郵件已經存在

成功

注冊失敗

在AJAX中,如果我執行console.logalert ,則希望根據流顯示上述3條消息中的任何console.log

如何在前端顯示回復?

您必須使用echo而不是返回成功。

請如下更改

if ($query->num_rows() > 0)
{
   echo "Email already exist";
}
else
{
   $data1=array(
         'email' => $email,
         'password' => md5($password)
       );

   $final=$this->signin_model->register_user($data1);
   echo $final;     
}   

並刪除一起初始化的2個變量。 那是沒有必要的。 這可以。 $success = $this->db->insert('student', $data1);

希望這可以幫到你。

您使用的ajax的數據類型為json。 因此,如果您希望數據顯示在前端,則可以將回復編碼為json,或者需要從ajax中更改或刪除json數據類型

請將dataType:'json'更改為dataType:'text'

<script type="text/javascript">
    $(document).ready(function() {
        $("#submit_form").click(function(event) {
        event.preventDefault();
        var email = $("input#email").val();
        var password = $("input#password").val();
        jQuery.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>" + "student/register",
        dataType: 'text',
        data: {email: email, password: password},
        success: function(res) {
        if (res)
            {
                console.log(res); //need to print the result here
                //alert(res);
            }
        }
        }); 
   });  
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM