我的页面上有一个按钮(设置区域),单击时会设置会话变量。页面上还有其他一些字段会根据此会话变量而更改。这就是为什么每当单击该按钮时,我都想自动刷新整个页面,以便使用会话变量的新值刷新其他字段。这是我的代码:
function setarea(){
var area_id = jq("#splash_area").val();
jq.ajax({
type: 'POST',
url: '<?php echo Mage::getBaseUrl(); ?>setsession/index/setarea',
data: {area_id:area_id},
success: function(data) {
}
});
window.location.reload(true);
}
使用此代码,页面刷新,但会话变量不刷新 - 它与以前相同。
有趣的是,当我使用 F5 进行手动刷新时,页面会正确刷新。
我在这里做错了什么?
由于 AJAX
是异步的,一旦发出 AJAX 请求,reload
就会立即触发。JS不等待对AJAX请求的响应。将调用移动到reload
移动到success
函数内部。
function setarea(){
var area_id = jq("#splash_area").val();
jq.ajax({
type: 'POST',
url: '<?php echo Mage::getBaseUrl(); ?>setsession/index/setarea',
data: {area_id:area_id},
success: function(data) {
window.location.reload(true);
}
});
}
尝试替换
window.location.reload(true);
跟
header("Location: YourFile.php");