gpt4 book ai didi

javascript - 在异步请求中使用 post 请求打开一个新窗口

转载 作者:行者123 更新时间:2023-11-27 22:53:22 57 4
gpt4 key购买 nike

我需要向为我创建 PDF 的页面发送异步 POST 请求。

我有一个 PHP 页面,它收集数据,然后发送异步 (jQuery) 触发器来处理数据并将其转换为 JSON,然后将其发送到另一个 PHP 页面,始终处于异步模式。

现在的问题是,我正在尝试使用 window.open 打开一个本地页面,该页面创建实际的 PDF 并将其返回到浏览器。

但是,window.open() 没有执行任何操作,调试控制台也没有显示任何错误。

应打开新窗口的代码:

$_POST['ddt_data'] = $_SESSION['$refinedJSON']; ?>
<script>window.open("ddt_creation.php");</script>
<?php

我尝试打开一个空白窗口,没有任何变化。 window 打不开。我没有激活广告拦截功能。

<小时/>

编辑1:

我已经根据下面评论中的建议更改了代码。新代码现在是:

$_POST['ddt_data'] = $_SESSION['$refinedJSON'];
echo "BLAM"; ?>
<script>alert(1); window.open("http://192.168.1.220/var/www/html/DDT_creation.php");</script>
<?php

我可以在我为异步请求准备的返回部分看到回显,但警报框从未显示,这同样适用于我尝试打开的页面。

通过检查我从请求中得到的响应,我注意到其中有一些奇怪的东西。这是完整的回复:

BLAM    
<script>alert(1); window.open("http://192.168.1.220/var/www/html/DDT_creation.php");</script>

我知道 JS 工作正常(在同一文件的其他部分使用它),但我不明白为什么代码没有立即执行,而是与响应一起发送。

最佳答案

任何 AJAX 请求的响应始终被视为文本,除非另有说明,在这种情况下,响应将被视为您选择的类型,例如 JSON。这意味着响应中的任何 JavaScript 代码都不会被执行。您需要将代码添加到页面的响应中才能执行,但同样,通过 innerHTML 等常规方法将 JavaScript 代码添加到页面不会执行代码。

相反,您应该将 window.open 代码放在 jQuery AJAX 调用中,或者从代码中您可以访问请求响应的任何位置。

就像这样...

$.ajax({
type: 'GET',
url: 'http://example.com/',

success: function(response) {
window.open('http://192.168.1.220/var/www/html/DDT_creation.php');
}
});

关于javascript - 在异步请求中使用 post 请求打开一个新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37855001/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com