我有一个脚本,on.DocumentReady将数据发布到另一个页面。该页面以一个div标签封装了一些HTML。
我的目标是在新窗口中打开此帖子回复/数据。
任何提示或线索?
以下是我根据Mille博士的建议创建的片段。
<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();
}
});
});
答案 0 :(得分:60)
使用write() - Popup文档的方法将标记放在那里:
$.post(url, function (data) {
var w = window.open('about:blank');
w.document.open();
w.document.write(data);
w.document.close();
});
答案 1 :(得分:25)
接受的答案不适用于“use strict”,因为“with”语句会抛出错误。所以相反:
$.post(url, function (data) {
var w = window.open('about:blank', 'windowname');
w.document.write(data);
w.document.close();
});
另外,请确保'windowname'中没有任何空格,因为在IE中会失败:)
答案 2 :(得分:6)
如果您不需要有关所请求数据的反馈,也不需要在开启者和弹出窗口之间进行任何交互,您可以在弹出窗口中发布隐藏的表单:
示例:
<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。但是,如果您有权访问其他服务器,则此方法有效,因为您必须修改响应。
答案 3 :(得分:0)
我用ajax发布,然后使用数据网址返回:
$(document).ready(function () {
var exportClick = function () {
$.ajax({
url: "/api/test.php",
type: "POST",
dataType: "text",
data: {
action: "getCSV",
filter: "name = 'smith'",
},
success: function(data) {
var w = window.open('data:text/csv;charset=utf-8,' + encodeURIComponent(data));
w.focus();
},
error: function () {
alert('Problem getting data');
},
});
}
});