首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript重新加载iframe时将变量传递给jsp。

使用javascript重新加载iframe时将变量传递给jsp。
EN

Stack Overflow用户
提问于 2010-04-29 02:53:30
回答 1查看 2.7K关注 0票数 1

在我的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。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-29 03:12:39

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

代码语言:javascript
复制
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包含在标记中之前,您需要对URL进行HTML转义。否则,URL中的&字符是无效的,并且在遇到与HTML实体名称匹配的参数名称时可能会造成麻烦。

代码语言:javascript
复制
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编码。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2732296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档