Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请求URI窗口太大。打开-解决方法_Javascript_Http_Jquery - Fatal编程技术网

Javascript 请求URI窗口太大。打开-解决方法

Javascript 请求URI窗口太大。打开-解决方法,javascript,http,jquery,Javascript,Http,Jquery,我正在打开一个窗口并向其传递一组参数。在本例中,我发送的是json字符串。此时,信息是toolarge,请求URI太大 window.open('../pssops21/php/createPhonePdf.php?strSelectedItems=' + strSelectedItems + '&strQBNumbers=' + arrQBNumbers, 'mywindow', 'resizable=1, scrollbars=1, left=80,top=60, w

我正在打开一个窗口并向其传递一组参数。在本例中,我发送的是json字符串。此时,信息是toolarge,请求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没有发布选项。jQueryAjax只发布信息、检索结果,不打开新窗口

有什么方法可以做到这一点吗


谢谢

您可以将新窗口打开到临时页面,然后使用JavaScript在原始页面中填写的表单在新窗口中发布该页面。

您可以将新窗口打开到临时页面,然后在新窗口中使用JavaScript在原始页面中填写的表单从该页面发布。

不幸的是,在web应用程序中,这是一种棘手的情况。URI大小的限制通常由您使用的浏览器决定,并且发布数据的选项不是可用的标准选项。由于安全原因,通常不支持执行Ajax post,然后“加载”结果

我过去使用过的一种解决方法是将其分为两步。基本上使用Ajax将json数据发布到服务器。作为响应,让服务器发回某种令牌以检索存储的数据。然后,将该标记用作您要打开的新窗口的参数,该窗口随后可以检索数据


我知道将数据传送到新页面需要做更多的工作,但它确实消除了这些大小/安全限制,并且是跨浏览器安全的。

不幸的是,在web应用程序中,这是一种棘手的情况。URI大小的限制通常由您使用的浏览器决定,并且发布数据的选项不是可用的标准选项。由于安全原因,通常不支持执行Ajax post,然后“加载”结果

我过去使用过的一种解决方法是将其分为两步。基本上使用Ajax将json数据发布到服务器。作为响应,让服务器发回某种令牌以检索存储的数据。然后,将该标记用作您要打开的新窗口的参数,该窗口随后可以检索数据


我知道将数据传送到新页面需要做更多的工作,但它确实消除了这些大小/安全限制,并且是跨浏览器安全的。

您可以使用以目标页面为目标的隐藏表单。为post值使用隐藏字段,并使用Javascript
submit()
方法提交表单


我相信,只有当您试图重定向当前窗口,而不是打开弹出窗口时,这才会起作用,尽管也可能有办法绕过这一限制。

您可以使用以目标页面为目标的隐藏表单。为post值使用隐藏字段,并使用Javascript
submit()
方法提交表单


我相信只有当您试图重定向当前窗口,而不是打开弹出窗口时,这才会起作用,尽管也有办法绕过这一限制。

您可以直接使用javascript,而不是将信息嵌入查询字符串中传递给窗口。在新打开的窗口上使用window.opener,您可以从子页面访问信息:

var selItems = window.opener.strSelectedItems;

请记住,在这种情况下,strSelectedItems需要在父页面中全局确定作用域。为了保持整洁,我会考虑主页上的函数,它将返回子页面所需的信息。

,而不是将信息嵌入到查询字符串中的窗口中,可以直接使用JavaScript。在新打开的窗口上使用window.opener,您可以从子页面访问信息:

var selItems = window.opener.strSelectedItems;
请记住,在这种情况下,strSelectedItems需要在父页面中全局确定作用域。为了保持整洁,我会考虑主页上的函数,这些函数将返回子页面所需的信息。