通过AJAX和PHP提交表单

时间:2018-08-07 10:25:45

标签: php ajax forms

场景:

单击提交按钮时,将显示具有以下消息的警报框:

  

提交表格后,您将无法进行任何更改。做   您要提交?

当用户按下确定时,应显示以下消息:

  

已提交

这是我的尝试:

这是表单的一部分:

注意我不会显示要提交的表单的全部数据,因为它会占用空间。我仅显示表单提交按钮的主要部分。

<div id="container">

    <form action="<?php echo site_url('main/save_appraisal');?>"  
        method="post" id="appraisalForm" name="appraisalForm">

    <?php if($appr_status < '2'){?>
    <input type="button" name="submit" id="submitAppraisal" 
    value="Submit" /> 

    <?php }?>

<form>
</div>

这是我控制器的部分

public function submitAppraisal(){
        $emp_id = $this->input->post('empid');
        echo $this->appraisal_model->setAppraisalStatus($emp_id);
        echo 'Submitted';
} 

这是我模型的部分

function setAppraisalStatus($employee_id=''){
if($employee_id == ''){
            return;
        }

        $login =  $this->session->userdata('username');     
        $loginid = $this->get_empid_exuname($login);

       $sql = "INSERT INTO appraisal_status 
 (id,employee_id,status,updated_on,updated_by)
 VALUES(seq_appraisal_status.nextval,$employee_id,$status,sysdate,'$login')";       
 $query = $this->db->query ( $sql );
}

这是表单的部分

    <script>
<script type="text/javascript">
$(function () {

   $( "#submitAppraisal" ).click(function() {        
        submitAppraisal();
    }); 
});


function submitAppraisal(){

    <?php if($this->session->userdata('userid') == $supervisor){?>
    var valid = 0;
    $( '.suvinput' ).each(function() {
        var vals = $(this).val();
        $(this).css('border-color','#ccc');
        if(vals == ''){         
            $(this).css('border-color','#f00');
            valid++;
        }

    }); 

    var confirmSubmit = confirm("You won't be able to make any 
    changes after submitting the form. Do you want to submit? ");
        if(confirmSubmit == false){ 
            return;
        }

        var params = $('form#appraisalForm').serialize()+ '&submit=Save';
        console.log(params);
        $.ajax({
              url: '<?php echo site_url('main/submitAppraisal');?>',
              type: 'post',
              data: params,
              success: function(data) {
              },
              error: function(err) {
              }
            });
    }
    </script>

这是我的数据库表,名为 appraisal_status

ID   |   Employee_ID  | Status

当前输出:

当用户按下提交按钮时,会出现以下问题:

You won't be able to make any changes after submitting the form. Do
you want to submit?

当用户按下时,应该提交表单并将记录插入数据库中,但是既不提交表单也不显示消息。

预期输出:

用户按下提交按钮后,将显示以下消息。

  

提交表格后,您将无法进行任何更改。做   您要提交?

当用户按下“确定”按钮时,应显示以下消息:

Submitted

我无法弄清楚哪里出了问题?

应进行哪些更正?建议受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

Ajax的全部目的是将响应传递给JavaScript,而不是简单地显示它。

这是您的成功功能:

      success: function(data) {
      },

它接受对变量data的响应,然后对其不执行任何操作。

您将忽略PHP程序的输出。

如果要显示输出,则需要编写代码以显示它。