2010-09-29 19 views
31

我有一個腳本,on.DocumentReady發佈數據到另一個頁面。該頁面用封裝在一個div標籤中的HTML進行響應。jquery後,在新窗口中的答覆

我的目標是讓這個帖子的回覆/數據在新窗口中打開。

任何提示或線索?

這是我從米勒博士的建議中創建的代碼片段。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
var packslip_id = 35592; 
var po_no = 0018439; 
var box_no = 1; 
    $.post("https://example.com/barcode/generate", { packing_slip: packslip_id, reference: po_no, total_boxes: box_no}, 
    function (data) { 
     alert(data); 
     var win=window.open('about:blank'); 
     with(win.document) 
     { 
      open(); 
      write(data); 
      close(); 
     } 
    }); 
}); 

+2

使用'window.open'失敗? – Alec 2010-09-29 19:25:36

+0

我想你一定會忘記這一點。任何彈出式窗口攔截器都會阻止一個新窗口,而不需要點擊等特殊的用戶操作。 – 2010-09-29 19:39:05

+0

Drle Molle,我在一個受控環境中爲我的網站啓用了彈出窗口... – Peter 2010-09-29 19:44:50

回答

52

使用寫() - 彈出的文件的方法把你的標記有:

$.post(url, function (data) { 
    var w = window.open('about:blank'); 
    w.document.open(); 
    w.document.write(data); 
    w.document.close(); 
}); 
+0

我想我正在使用你說的正確的......,但它並沒有打開彈出窗口或實際上發佈任何數據到服務器。我將新代碼放在原始文章中。 – Peter 2010-09-29 20:34:07

+1

使用看起來正確。您使用的是絕對網址,是什麼原因? – 2010-09-29 20:55:27

+0

該URL位於單獨的服務器上。當我在當地的mamp安裝中運行它並使用「Coda的」預覽功能時,我現在能夠正常工作......但是當我通過Safari瀏覽器運行它時,根本沒有數據出現......我現在很困惑。感謝您的所有幫助。 – Peter 2010-09-29 21:26:16

-4

嘗試

$.post('urpage.php',{}, 
function(data) { 
window.open('page.php?data=data') 
}); 

,並有page.php文件顯示任何數據被認爲是

+0

我張貼的頁面返回我想在新窗口中打開的html ...必須將它發送到另一個頁面,好像做了兩次... – Peter 2010-09-29 20:36:07

+0

已將頁面發送給它,只是發送數據。否則我不知道如果你可以通過HTML window.open,谷歌搜索會告訴你,如果這可能。 – Ascherer 2010-09-29 20:37:42

3

如果你不需要一個關於請求的數據反饋,也不需要揭幕戰和彈出之間的任何互動,您可以發佈一個隱藏的形式進入彈出:

例子:

<form method="post" target="popup" id="formID" style="display:none" action="https://example.com/barcode/generate" > 
    <input type="hidden" name="packing_slip" value="35592" /> 
    <input type="hidden" name="reference" value="0018439" /> 
    <input type="hidden" name="total_boxes" value="1" /> 
</form> 
<script type="text/javascript"> 
window.open('about:blank','popup','width=300,height=200') 
document.getElementById('formID').submit(); 
</script> 

否則,你可能使用jsonp。但是,如果您有權訪問其他服務器,則這隻適用於您,因爲您必須修改響應。

25

接受的答案在「with strict」中不起作用,因爲「with」語句會引發錯誤。因此,而不是:

$.post(url, function (data) { 
    var w = window.open('about:blank', 'windowname'); 
    w.document.write(data); 
    w.document.close(); 
}); 

此外,還要確保「windowname」沒有在任何空間,因爲這會在IE :)