AJAX Post没有发送正确的值

时间:2015-04-28 20:05:23

标签: php ajax codeigniter model-view-controller

我正在尝试使用AJAX将数据从我的视图发送到我的控制器。完成后,我们的想法是将数据转发到新视图,然后使用它来相应地显示信息。但是,当我尝试它时,数据无法到达视图。有点奇怪的是,在使用Chrome的开发者工具时,如果我在AJAX调用的成功函数中调试数据,它会显示变量是正确的,但当我只是尝试在html中显示该变量时,它值为0.任何想法?

我的观点功能:

$(document).on("keyup", function(e){
    guess = String.fromCharCode(e.which).toLowerCase();
    if (counter < test_key.length){
      if (guess == 'f' || guess == 'j'){
        if (guess == test_key[counter].answer){
            console.log(counter);
            console.log(test_key[counter]);
            $(document).off('keyup');
            $('#imageLocation').hide();
            counter++;
            practiceTask(counter, test_key, test_id); 
          }
        else{
          $.ajax({
            type: "POST",
            url: '<?php echo site_url('practiceTest/errorPage'); ?>',
            data: {question: 6},
            success: function(data){
              console.log(data);
              window.location.href = '<?php echo site_url('practiceTest/errorPage'); ?>';
            } 
          }); 
        } 
      }  
    }
});        

我的控制器错误页面功能:

function errorPage(){
    if (!empty($_POST['question'])){
        $data['question'] = $this->input->post('question');
    }
    else{ 
        $data['question'] = 0;
    }
    $this->load->view("practice_incorrect_view", $data);
} 

我的新观点practice_incorrect_view:

<html>
  <head>
  </head>

  <body>    
     <?php echo $question; ?> 

     <div class="centered">
       <div style="width: 500px; margin: 20px auto;">
       </div>
     </div>
  </body>
</html>

1 个答案:

答案 0 :(得分:1)

问题的根源在于您正在成功发布practiceTest/errorPage(因此正确的控制台),但在您的成功回调中,您正在导航到practiceTest/errorPage,但对此并不了解您刚发布的表单数据。

$.ajax({
    type: "POST",
    url: '<?php echo site_url('practiceTest/errorPage'); ?>',
    data: {question: 6},
    success: function(data){
        console.log(data);
        //-- this is the troublesome line
        //-- window.location.href = '<?php echo site_url('practiceTest/errorPage'); ?>';
    } 
}); 

您应该使用从成功的AJAX请求返回的数据直接修改DOM,而不是使用window.location重定向。

某处有例子吗?