我有一个javascript函数,它使用window.open调用另一个页面并返回结果.
这是我的代码部分:
var windowFeatures = "status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=1, scrollbars=1";
window.open ('http://www.domain.com/index.php?p=view.map&coords=' + encodeURIComponent(coords), 'JobWindow', windowFeatures);
Run Code Online (Sandbox Code Playgroud)
我现在的问题是我要传递大量数据供GET处理,我需要使用POST方法传递它.
如何转换上面的代码以使用POST方法打开页面而不在整个页面上显示实现表单(该页面列出了包含供应商列表的100个订单 - 我正在尝试映射供应商)
当用户访问我的网站时,每个页面上都有一个"登录"链接.单击此按钮可使用一些JavaScript显示覆盖窗口,提示用户提供其凭据.输入这些凭证后,将对Web服务器进行Ajax调用以验证它们; 如果它们有效,则会发回验证票证cookie并重新加载页面,以便显示特定于已验证用户或(现在)当前登录用户的页面上的任何内容.
我正在使用以下脚本完成页面重新加载:
window.location.reload();
Run Code Online (Sandbox Code Playgroud)
这非常适用于通过GET请求(绝大多数)加载的页面,但有些页面使用回发表单.因此,如果用户转到其中一个页面,执行回发,然后选择登录,则在window.location.reload()脚本运行时会通过对话框提示是否要重新提交POST正文.

我想绕过这个我可以告诉浏览器重新加载页面,所以我试过:
window.location.href = window.location.href;
Run Code Online (Sandbox Code Playgroud)
但浏览器不会对上述语句采取任何操作,我认为是因为它认为新URL与旧URL相同.如果我将以上内容更改为:
window.location.href = window.location.pathname;
Run Code Online (Sandbox Code Playgroud)
它重新加载页面,但我丢失了任何查询字符串参数.
我当前的解决方法已经足够了,但并不漂亮 - 简而言之,我将查询字符串参数添加到当前window.location.href值,然后window.location.href通过调用将其分配回来reloadPage("justLoggedIn"),其中reloadPage函数是:
function reloadPage(querystringTackon) {
var currentUrl = window.location.href;
if (querystringTackon != null && querystringTackon.length > 0 && currentUrl.indexOf(querystringTackon) < 0) {
if (currentUrl.indexOf("?") < 0)
currentUrl += "?" + querystringTackon;
else
currentUrl += "&" + querystringTackon;
}
window.location.href = currentUrl;
}
Run Code Online (Sandbox Code Playgroud)
这可行,但它会导致URL www.example.com/SomeFolder/SomePage.aspx?justLoggedIn,这似乎很俗气.
在JavaScript中是否有办法让它进行GET重新加载而不提示用户重新提交POST数据?我需要确保任何现有的查询字符串参数都不会丢失.
我有一个看似简单的问题,但找不到答案.我有一个网页,可能是由POST请求产生的,并且可能在URL中有一个锚点(#).我想在JavaScript中将此页面重新加载为GET请求.所以它与这个问题类似,但实际上我想避免POST,而不仅仅是关于它的警告.
因此,例如,如果页面来自对" http:// server/do/some?thing# " 的POST请求,我想重新加载URL" http:// server/do/some?thing "作为GET .如果我试试
window.location.reload(true);
Run Code Online (Sandbox Code Playgroud)
导致IE尝试POST.如果我改为:
window.location = window.location.href;
Run Code Online (Sandbox Code Playgroud)
当URL具有锚点时,这不起作用.我是否真的需要自己进行字符串操作以摆脱"#whatever"或者是否有更简单,"更好"的方法来做到这一点?
我正在尝试刷新页面,而不是从上一次发送POST.
我试过了
window.open("postme.php?r=t", "_self");
Run Code Online (Sandbox Code Playgroud)
它附加?r=t到最后但它似乎没有刷新页面,因为页面显示目录中的一些文件,即使我已经移动或删除它们也没有改变.
你能指定URL window.location.reload();吗?
有任何想法吗?
谢谢