我正在尝试使用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>
答案 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
重定向。
某处有例子吗?