我正在使用codeigniter和jquery。我正在使用ajax将一些信息发送到codeigniter函数以执行db操作,以便更新页面。操作完成后,我正在尝试刷新页面。但是,刷新工作不一致,通常我必须手动重新加载页面。我发现萤火虫没有错误:
var message = $('#send_message').val()
if ((searchIDs).length>0){
alert("searchIDs "+searchIDs );
$.ajax({
type: "POST",
url: "AjaxController/update",
data:{ i : searchIDs, m : message },
dataType: 'json',
success: function(){
alert("OK");
},
complete: function() {
location.href = "pan_controller/my_detail";
}
})
.done(function() { // echo url in "/path/to/file" url
// redirecting here if done
alert("OK");
location.href = "pan_controller/my_detail";
});
} else { alert("nothing checked") }
break;
我该如何解决这个问题?
附录:我尝试过改为;
$.ajax({
type: "POST",
url: "AjaxController/update",
data:{ i : searchIDs, m : message },
dataType: 'json',
.done(function() { // echo url in "/path/to/file" url
// redirecting here if done
alert("REFRESHING..");
location.href = "pan_controller/my_detail";
});
}
})
这只是默认网站主页。再次,萤火虫没有错误
答案 0 :(得分:1)
在location.href
上添加窗口对象,如下所示:
window.location.href = "pan_controller/my_detail";
答案 1 :(得分:1)
尝试使用
之类的完整路径$.ajax({a
type: "POST",
url: "YOURBASEPATH/AjaxController/update",
data:{ i : searchIDs, m : message },
dataType: 'json',
.done(function() { // echo url in "/path/to/file" url
// redirecting here if done
alert("REFRESHING..");
location.href = "YOURBASEPATH/pan_controller/my_detail";
});
}
})
BASEPATH应该是这样的" http://www.example.com"
答案 2 :(得分:0)
尝试禁用csrf_enabled(config / config.php)并尝试它。如果可行,则重新启用保护,而不是自己编译数据,序列化表单;或者,至少包括csrf隐藏字段codeigniter自动添加。您也可以使用GET来避免CSRF保护,但这是最不可取的解决方案。