我试图从服务器打开一个包含文件内容的新浏览器窗口。 但是屏幕只是在没有在新窗口中打开报告的情况下闪烁。
我确实拥有在开发者工具的网络标签中确认的正确内容。
我尝试了<a href>
方法,但我收到Not allowed to load local resource:
错误。所以认为这可能会更好。
我在这里缺少什么?
AJAX
openSavedReport:function(data){
return $.ajax({
method: "GET",
url: reportsBaseUrl + "show-report.php",
data:{name : data}
}).then(function(data){
myWindow = window.open("data:text/html," + encodeURIComponent(data), "_blank");
myWindow.focus();
});
},
PHP SIDE
$path = $_SERVER['DOCUMENT_ROOT']."/reports/saved_reports/";
if(isset($_GET['name'])){
$name = $_GET['name'].'.html';
$data = (file_get_contents($path.$name));
echo json_encode($data);
}
答案 0 :(得分:-1)
为了安全起见,在ajax回调函数中打开一个新的选项卡/窗口是不可能的,这意味着,它只能由用户操作允许。
但是,您可以先创建一个新的选项卡/窗口,然后发送ajax请求,并为之前创建的选项卡/窗口设置url / HTML。
我的代码是:
onPayPalClicked() {
const newTab = window.open()
const href = window.location.href
const successURL = href.substr(0, href.lastIndexOf('/'))
.replace('settlement', 'payment') + '/paypal-return/' + this.orderCode
const failureURL = href.substr(0, href.lastIndexOf('/'))
.replace('settlement', 'payment') + '/failure/' + this.orderCode
this.payPalApiService.function001(this.orderCode, 'USD', successURL, failureURL)
.then(resp => {
if ((<any>resp).error.no === 0) {
this.paypalPaymentURL = (<any>resp).result.approvalUrl
newTab.location.href = this.paypalPaymentURL
} else {
console.error((<any>resp).error.info)
}
}).catch(msg => console.error(msg))
}