使用javascript重新加载iframe时向jsp传递变量
在我的javascript代码中,我在iframe中加载一个jsp页面,并传递一些变量,如下所示:使用javascript重新加载iframe时向jsp传递变量,javascript,jsp,iframe,reload,Javascript,Jsp,Iframe,Reload,在我的javascript代码中,我在iframe中加载一个jsp页面,并传递一些变量,如下所示: htmlData[i++]=” 然后,我必须在一个操作后重新加载该jsp页面,我要执行以下操作: accord=ui.newHeader.text(); document.getElementById('mapframe').contentWindow.location.reload() 除了“accord”变量没有得到更新外,重新加载工作正常。当我从jsp调用它时,它仍然有其原始值。重新加载if
htmlData[i++]=”代码>
然后,我必须在一个操作后重新加载该jsp页面,我要执行以下操作:
accord=ui.newHeader.text();
document.getElementById('mapframe').contentWindow.location.reload()代码>
除了“accord”变量没有得到更新外,重新加载工作正常。当我从jsp调用它时,它仍然有其原始值。重新加载iframe/jsp时如何传递新值
这应该没有什么区别,但我正在使用jquery,这是为Yahoo zimlet设计的
谢谢。accord变量是如何“更新”的?目前,您只是在重新加载第一轮构建的相同URL;如果JavaScriptaccord
变量已更改,并且您希望更改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包含在标记中之前对其进行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>';
函数对HTML进行编码{
返回s.replace(/&/g,“&;”)。替换(/