我打开一个窗口并将一组参数传递给它。在这种情况下,我发送json字符串。在时间,信息太大,并且发生Request-URI太大。
window.open('../pssops21/php/createPhonePdf.php?strSelectedItems='
+ strSelectedItems + '&strQBNumbers=' + arrQBNumbers, 'mywindow',
'resizable=1, scrollbars=1, left=80,top=60, width=650, min-height=400')
Window.open没有发帖选项。 Jquery ajax只发布信息检索,结果并且不会打开新窗口。
有没有办法做到这一点?
感谢。
答案 0 :(得分:2)
不幸的是,这在Web应用程序中很棘手。 URI大小的限制通常由您使用的浏览器决定,POST数据的选项不是可用的标准。至于做一个Ajax帖子然后“加载”结果,通常不支持出于安全原因。
我过去使用过的解决方法是将其分为两个步骤。基本上使用Ajax将json数据发布到服务器。作为响应,让服务器发回某种令牌来检索存储的数据。然后,使用该标记作为您正在打开的新窗口的参数,然后谁可以检索数据。
我知道将数据传输到新页面需要更多工作,但它确实消除了这些大小/安全限制,并且是跨浏览器安全的。
答案 1 :(得分:1)
您可以打开一个临时页面的新窗口,然后使用原始页面中JavaScript填写的表单在新窗口中从该页面进行POST。
答案 2 :(得分:1)
您可以使用以目标网页为目标的隐藏表单。为帖子值使用隐藏字段,并使用Javascript submit()
方法提交表单。
我相信这只会在您尝试重定向当前窗口时才会起作用,而不是打开弹出窗口,尽管可能还有一种解决方法。
答案 3 :(得分:0)
您可以直接使用javascript,而不是嵌入信息以传递到查询字符串中的窗口。在新打开的窗口上使用window.opener,您可以从子页面访问信息:
var selItems = window.opener.strSelectedItems;
请记住,在这种情况下,strSelectedItems需要在父页面中进行全局范围化。为了保持清洁,我会考虑在主页面上返回子页面所需信息的函数。