在新的浏览器窗口中打开文件内容

时间:2018-03-27 14:26:32

标签: javascript jquery

我试图从服务器打开一个包含文件内容的新浏览器窗口。 但是屏幕只是在没有在新窗口中打开报告的情况下闪烁。

我确实拥有在开发者工具的网络标签中确认的正确内容。

我尝试了<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);
}

1 个答案:

答案 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))
}