使用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

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

htmlData[i++]=”

然后,我必须在一个操作后重新加载该jsp页面,我要执行以下操作:

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

除了“accord”变量没有得到更新外,重新加载工作正常。当我从jsp调用它时,它仍然有其原始值。重新加载iframe/jsp时如何传递新值

这应该没有什么区别,但我正在使用jquery,这是为Yahoo zimlet设计的


谢谢。

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包含在标记中之前对其进行HTML转义。否则,URL中的
&
字符无效,当您点击与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>';
函数对HTML进行编码{
返回s.replace(/&/g,“&;”)。替换(/