【问题标题】:AJAX reloads the page without inserting into databaseAJAX 重新加载页面而不插入数据库
【发布时间】:2014-12-18 13:06:10
【问题描述】:

我是 Ajax 的新手并且很困惑。问题是 ajax 重新加载页面。 url中提到的函数将数据插入数据库。但页面重新加载。我猜 URL 不起作用,但我不确定。

这是我的控制器功能

public function insert_student_fee_payment()
{
    $std_code=$this->input->post('std_code');
    $total_fee=$this->input->post('total_fee');
    $payable_fee=$this->input->post('payable_fee');
    $date=date('Y m d');

    $class_detail=$this->db->select('class.class_year,class.class_semester')
    ->join('class','class_student.class_id=class.class_id','LEFT')
    ->where('class_student.student_id',$std_code)
    ->where('class_student.class_student_status',2)
    ->limit(1)
    ->get('class_student')
    ->result();

    if(count($class_detail)>0)
    {
        foreach($class_detail as $cd)
        {
            $year=$cd->class_year;
            $semester=$cd->class_semester;
        }
    }

    $data=array(
    'std_code'=>$std_code,
    'year'=>$year,
    'semester'=>$semester,
    'total_fee'=>$total_fee,
    'payable_fee'=>$payable_fee,
    'date'=>$date,
    'status'=>2
    );

    if($this->db->insert('student_fees',$data))
    {
        echo '1';
    }


}

这是我的 Ajax 代码

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

$('#insert_fee_payment').click(function(){

var std_code=$('#std_code').text();
var total_fee=$('#total_fee').text().split(' ');
var payable_fee=$('#payable_fee').text().split(' ');
total_fee=total_fee[0];
payable_fee=payable_fee[0];

var data='std_code='+std_code+'&total_fee='+total_fee+'&payable_fee='+payable_fee;
$.ajax({
        url: '<?php echo base_url()."index.php/finance/insert_student_fee_payment;?>',
        type: 'POST',   
        data: data,
        success: function(response)
        {
          alert(response);     
        },
        error: function(response,status,err)
        {
          alert(err.message);
        }
}); 

});  
});

大家帮忙

【问题讨论】:

  • 尝试更改 ajax 请求中的 url:- url: 'finance/insert_student_fee_payment'
  • 尝试了可能的变化,但没有奏效。
  • 尝试通过提供可以提出请求的核心 url 来测试它?你可以使用 base_url() 吗?
  • 是的,这里是 URL:'',
  • 您可以尝试从您的网址中删除 index.php 吗?

标签: javascript php jquery ajax


【解决方案1】:

我们看不到 HTML,所以很难说出了什么问题,但我猜$('#insert_fee_payment') 是一个提交按钮,所以您必须默认取消提交表单的操作。

$('#insert_fee_payment').click(function(e){
    e.preventDefault();
};

$('#insert_fee_payment').click(function(){

var std_code=$('#std_code').text();
var total_fee=$('#total_fee').text().split(' ');
var payable_fee=$('#payable_fee').text().split(' ');
total_fee=total_fee[0];
payable_fee=payable_fee[0];

var data='std_code='+std_code+'&total_fee='+total_fee+'&payable_fee='+payable_fee;
$.ajax({
        url: '/index.php/finance/insert_student_fee_payment',
        type: 'POST',   
        data: data,
        success: function(response)
        {
          alert(response);     
        },
        error: function(response,status,err)
        {
          alert(err.message);
        }
}); 
return false;
});  

【讨论】:

    【解决方案2】:

    在错误函数后添加return false。

        $(document).ready(function(){
    
        $('#insert_fee_payment').click(function(){
    
        var std_code=$('#std_code').text();
        var total_fee=$('#total_fee').text().split(' ');
        var payable_fee=$('#payable_fee').text().split(' ');
        total_fee=total_fee[0];
        payable_fee=payable_fee[0];
    
        var data='std_code='+std_code+'&total_fee='+total_fee+'&payable_fee='+payable_fee;
         $.ajax({
        url: '/index.php/finance/insert_student_fee_payment',
        type: 'POST',   
        data: data,
        success: function(response)
        {
          alert(response);     
        },
        error: function(response,status,err)
        {
          alert(err.message);
        }
        return false;
        }); 
    
        });  
        });
    

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多