在我的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。
谢谢。
发布于 2010-04-29 03:12:39
‘accord’变量是如何‘更新’的?目前,您只是重新加载了第一次构建的相同的URL;如果JavaScript的accord变量已经更改,并且您希望更改URL以反映这一点,则必须构建一个新的URL,并使用不同的accord参数将iframe导航到新页面。
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实体名称匹配的参数名称时可能会造成麻烦。
function encodeHTML(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
htmlData[i++]= '<iframe id="mapframe" src="'+encodeHTML(url)+'" frameborder="0" style="width:330px;height:300px"></iframe>';(我通常更喜欢使用DOM方法创建元素,以避免显式地使用HTML编码。)
https://stackoverflow.com/questions/2732296
复制相似问题