Jquery post,在新窗口中响应

IT技术 javascript jquery
2021-03-07 17:18:16

我有一个脚本 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();
        }
    });
 });

4个回答

使用 Popup 文档的 write()-Method 将您的标记放在那里:

$.post(url, function (data) {
    var w = window.open('about:blank');
    w.document.open();
    w.document.write(data);
    w.document.close();
});
AJAX 请求仅适用于同一个域。在没有 AJAX 的情况下做这件事会是一个机会吗?
2021-04-22 17:18:16
网址位于单独的服务器上。当我在本地 mamp 安装上运行它并使用“Coda 的”预览功能时,我现在开始工作了……但是当我通过 safari 运行它时,根本没有数据出现……我现在很困惑。感谢您到目前为止的所有帮助。
2021-04-24 17:18:16
使用看起来正确。您使用的是绝对网址,原因是什么?
2021-04-29 17:18:16
我想我正确地使用了你所说的......,但它没有打开弹出窗口或实际将任何数据发布到服务器。我把新代码放在原来的帖子里。
2021-04-30 17:18:16
我只是要把脚本移到那个服务器上……但我真的很想知道你除了 ajax 还会使用什么……谢谢你的帮助!
2021-05-01 17:18:16

接受的答案不适用于“use strict”,因为“with”语句会引发错误。所以与其:

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

另外,请确保“windowname”中没有任何空格,因为这将在 IE 中失败:)

如果您不需要有关所请求数据的反馈,也不需要开启器和弹出窗口之间的任何交互,您可以将隐藏表单发布到弹出窗口中:

例子:

<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。但这仅适用于您有权访问其他服务器的情况,因为您必须修改响应。

我用 ajax 帖子做了,然后使用数据 url 返回:

$(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');
           },
        });
    }
});