【问题标题】:Maintain the value across two jsp pages跨两个jsp页面维护值
【发布时间】:2014-09-22 19:23:27
【问题描述】:

我必须在表格中取值:

<script  type="text/javascript">    
    var activeRequest;
    $(document).ready(function(){

        $(".i_search").on("click", function(event){
            event.preventDefault();
            activeRequest = $(this).closest('tr').find('.request').text();
            renderElement();        
        });     
    });

    function renderElement(inUrl){
        $.ajax({
            url:  "/?pagename=SiteEntry_LT_EM/Advise/CS_Advise_Detail",
            type: "POST",
            data : {"advice_id":activeRequest}
        })     
        .done(function( response ) {
            $("#popUpDetail").html(response).fadeIn('slow');  
        });     
    }   
</script>

在我的另一个 jsp 页面中:

<%= ics.GetVar("advice_id") %>

但是当我点击$(".i_search") 时,另一个页面中的值ics.GetVar("advice_id") 并没有改变。也许这个值是保存在缓存中的。

我使用 PHP 进行了同样的操作,并且每次单击数据更改时它都能正常工作。现在我更加困惑了。

在 PHP 中:

<?php echo $_POST["advice_id"]; ?>

【问题讨论】:

  • 已经提供的页面不会得到更新,除非他们正在做 ajax 轮询或类似的事情。
  • 即使我用 'onclick' 事件再次调用?
  • 有什么想法吗? @developerwjk
  • 对不起,我以为你的意思是你希望这个 ajax 调用来更新不同的选项卡。您应该更改标题,因为它具有误导性。

标签: javascript jquery ajax jsp


【解决方案1】:

首先,使用 POST 时,不应在 url 中包含参数,而应在数据部分中包含参数。不要混合使用两种方式。

其次,如果您怀疑存在缓存问题,请在您的 ajax 调用中包含一个随机参数和/或设置缓存:false,如下所示:

   $.ajax({
        url:  "/",
        type: "POST",
        cache: false,
        data : 
        {
          "advice_id":activeRequest, 
           "pagename": "SiteEntry_LT_EM/Advise/CS_Advise_Detail"
          "r": Math.random() 
        }
    })

您还可以在 ajax 调用的 servlet 或 jsp 中设置 no-cache 标头,以防止浏览器对其进行缓存:

response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma","no-cache");

【讨论】:

  • 谢谢,它是 Oracle Web 中心站点中 SiteEntry 中的一个参数:SiteEntry_LT_EM/Advise/CS_Advise_Detail 缓存规则:已删除缓存。
猜你喜欢
  • 2013-09-15
  • 2011-10-09
  • 2014-04-19
  • 2015-06-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多