手动刷新与位置重新加载


Manual refresh vs. location.reload

我的页面上有一个按钮(设置区域),单击时会设置会话变量。页面上还有其他一些字段会根据此会话变量而更改。这就是为什么每当单击该按钮时,我都想自动刷新整个页面,以便使用会话变量的新值刷新其他字段。这是我的代码:

        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");