【问题标题】:Passing a variable to jsp when reloading an iframe using javascript使用javascript重新加载iframe时将变量传递给jsp
【发布时间】:2011-02-13 12:11:57
【问题描述】:

在我的 javascript 代码中,我在 iframe 中加载 jsp 页面并传递一些变量,如下所示:

htmlData[i++]="<iframe id=\"mapframe\" frameborder=\"0\" style=\"width:330px;height:300px\" src=\"" + "mapURL.jsp" +"&lat=" + AjxStringUtil.urlComponentEncode("33.65") +"&lng=" + AjxStringUtil.urlComponentEncode("-84.42") +"&accord=" + AjxStringUtil.urlComponentEncode(accord) +"\"></iframe>";

然后我必须在一个动作之后重新加载那个jsp页面,我这样做:

accord = ui.newHeader.text(); document.getElementById('mapframe').contentWindow.location.reload();

除了“accord”变量没有更新之外,重新加载有效。当我从 jsp 调用它时,它仍然具有其原始值。重新加载 iframe/jsp 时如何传递新值?

这应该没什么区别,但我正在使用 jquery,这是一个 Yahoo zimlet。

谢谢。

【问题讨论】:

    标签: javascript jsp iframe reload


    【解决方案1】:

    “accord”变量是如何“更新”的?目前,您只是重新加载第一次构建的相同 URL;如果 JavaScript accord 变量已更改,并且您希望更改 URL 以反映这一点,则必须构建一个新 URL 并将 iframe 导航到具有不同 accord 参数的新页面。

    function encodeParameters(o) {
        var s= [];
        for (var k in o)
            if (o.hasOwnProperty(k))
                s.push(encodeURIComponent(k)+'='+encodeURIComponent(o[k]));
        return s.join('&');
    }
    
    var accord= ui.newHeader.text(); 
    var url= 'mapURL.jsp?'+encodeParameters({
        lat: '33.65', lng: '-84.42', accord: accord
    });
    document.getElementById('mapframe').src= url;
    

    注意contentWindow 在历史上是一个 IE 扩展,最好避免使用。此外,如果您必须通过将 HTML 粘贴在一起来创建 iframe,则需要先对 URL 进行 HTML 转义,然后再将其包含在标记中。否则,URL 中的&amp; 字符无效,并且在您点击与 HTML 实体名称匹配的参数名称时可能会导致问题。

    function encodeHTML(s) {
        return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
    }
    
    htmlData[i++]= '<iframe id="mapframe" src="'+encodeHTML(url)+'" frameborder="0" style="width:330px;height:300px"></iframe>';
    

    (我通常更喜欢使用 DOM 方法创建元素,以避免必须显式地进行 HTML 编码。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多