2009-10-28 51 views
1

我打開一個窗口並向其傳遞一組參數。在這種情況下,我正在發送json字符串。在時間,信息是toolarge,並且發生Request-URI太大。Request-URI太大window.open - 解決方法

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只發布信息檢索,結果並不打開一個新窗口。

有沒有辦法做到這一點?

謝謝。

回答

2

不幸的是,這是web應用程序中棘手的情況。 URI大小的限制通常由您使用的瀏覽器支配,POST數據選項不是可用的標準。至於做一個Ajax帖子,然後「加載」結果,通常由於安全原因而不被支持。

我過去使用的解決方法是將其分爲兩個步驟。基本上使用Ajax將你的json數據發佈到服務器上。作爲迴應,請讓服務器回送某種令牌來檢索存儲的數據。然後,使用該標記作爲您打開的新窗口的參數,然後誰可以檢索數據。

我知道將數據轉移到新頁面需要多一點工作,但它確實消除了這些大小/安全限制,並且是跨瀏覽器的安全。

1

您可以打開一個新窗口到臨時頁面,然後使用原始頁面中由JavaScript填寫的表單在新窗口中從該頁面POST。

1

您可以使用以目標頁面爲目標的隱藏表單。爲您的帖子值使用隱藏字段,並使用Javascript submit()方法提交表單。

我相信這隻會在你試圖重定向當前窗口,不打開彈出窗口時起作用,儘管也可能有解決方法。

0

而不是嵌入信息傳遞到查詢字符串中的窗口,您可以直接使用JavaScript。在新打開的窗口使用window.opener,您可以從子頁面訪問信息:

var selItems = window.opener.strSelectedItems; 

記住strSelectedItems在這種情況下,需要在父頁面全局範圍。爲了保持乾淨,我會考慮在主頁面上返回子頁面所需信息的函數。

+0

這可以工作,除了我需要一個PHP。 – Natkeeran 2009-10-28 15:14:43