2012-12-19 66 views
2

我正在做和Ajax調用發送參數到一個.php文件,當調用完成時,我想彈出一個新窗口到結果頁面,但它不起作用。window.open當ajax調用結束,不起作用

這裏是我的Ajax代碼

 $.ajax({ 
      type: "POST", 
      url: "pipeline2.php", 
      data: formData, 
      cache: false, 
      processData: false, 
      contentType: false, 
      //async: false, 
     }).done(function (data) { 
      $("#resultados_pipeline").append(data); 
      document.getElementById('Running').style.display = 'none'; 
      window.open("results_page.php?jid="+job_id); 
      alert(job_id); 
     }); 

我首先想到的是也許是JOB_ID在阿賈克斯沒有設置,但該警報顯示我的預期......

我也試圖與異步:是真的,它也不起作用

+1

你有什麼錯誤嗎?我沒有看到job_id被設置...? –

+1

你從哪裏得到'job_id'? – adeneo

+0

@LittleBigBot jobId被設置,當我點擊提交按鈕,這是工作正常,腳本pipeline2.php創建工作目錄,然後運行管道,然後當它完成它提醒jobId,並確定...永恆的作品很好,只是結果窗口不打開 – user1843376

回答

2

瀏覽器不允許window.open調用,除非涉及用戶觸發的事件。

Ajax響應事件不是由用戶觸發的,所以彈出窗口在此時被阻止。

+0

所以我現在可以用什麼來打開一個新窗口? – user1843376

+0

'location = ...',一個動態生成的'div',幀。 – Quentin

+0

似乎只有某些用戶觸發的事件允許這種情況,例如鼠標點擊而不是懸停事件。您之前的評論是否打算指出3種解決方法,或僅僅是建議一些可能的替代方法來打開新窗口? – Matt