2016-03-08 38 views
-2

我通过ajax向控制器/函数发送post请求,并获得成功的结果:它将结果加载到同一页面,因为它总是,但我想退出ajax时,我到达控制器/函数,因为我想加载不同的视图$ this-> load-> view('htmlfile')。如何停止类型后的ajax请求:发布

function test() { 

    var wingId = $('#wing_id').val(); 
    var classId = $('#class_id').val(); 
    var sectionId = $('#section_id').val(); 
    var gender = $('#gender').val();   

    $('#error').hide(); 

    $.ajax({ 
     url: "<?php echo base_url()?>admin/library/totalStudentsReportPrint/", 

     data: { 

      wingId: wingId, 
      classId: classId, 
      sectionId: sectionId, 
      gender: gender 

     }, 
     type: "post", 

     success: function (result) { 
      $('#data_result').html(result); 

     } 
    }); 

} 

PHP的控制器功能

function totalStudentsReportPrint(){ 

    $student_data['wingId'] = $_POST['wingId']; 
    $student_data['classId'] = $_POST['classId']; 
    $student_data['sectionId'] = $_POST['sectionId']; 
    $student_data['gender'] = $_POST['gender'];   


$this->load->view('institute/admin/library/total_students_btm_tbl_print',$student_data); 
} 
+0

我不明白你的问题?你想加载其他模板?为什么不通过ajax发送模板路径,并检查函数中的$ _POST值? – kaito

回答

0

所有你想要的是中止$就调用,对不对?看看Abort Ajax requests using jQuery的答案。

但是,您不能从PHP中止它。 $ .ajax在您的客户端浏览器中运行,而不是在您的PHP服务器中运行。 $ .ajax调用在一个单独的线程中运行PHP,而PHP则加载您的视图。 您最终可以做的只是当您要加载新视图时,您肯定会对客户端所做的浏览器执行操作。在将请求发送到PHP服务器之前,您可能首先要中止$ .ajax调用。 另一种方法是创建一个PHP共享内存变量,在加载视图时设置,并实现您的$ .ajax PHP调用处理程序,并采用一种停止处理的方式,如果为该会话设置了该变量。有点复杂,只是放手罢了。