2017-03-20 79 views
0

我試圖在PhantomJS中使用$ .getJSON,但不可能得到它的結果。任何解決方案我不能直接加載或包含JS。頁面必須從相同的域中調用。PhantomJS getJSON無法獲得迴應

所以我想打開一個頁面,並從那裏打電話。

這裏是一個不工作我當前的代碼:

var jqueryUrl = "https://code.jquery.com/jquery-latest.min.js"; 

page.open("http://www.example.com/", function(status) { 
    if (status === "success") { 
      page.includeJs(jqueryUrl, function() { 
      var result = page.evaluate(function() { 
       $.getJSON('http://www.example.com/someJson', function(data) { 
        return data; 
       }); 
      }); 
      console.log(result); 
      phantom.exit(); 
     }); 
    } else { 
     phantom.exit(1); 
    } 
}); 

感謝您的幫助!

+0

請加[page.onError](http://phantomjs.org/api/webpage/handler/on -error.html)處理程序來檢查錯誤。 – Vaviloff

回答

1

你需要用組合使用page.onCallbackwindow.callPhantom,因爲你正在在phantomjs上下文中的HTTP請求和結果需要請求完成後要返回只。

我沒有測試的正是這種代碼,但它應該是這樣的:

var jqueryUrl = "https://code.jquery.com/jquery-latest.min.js"; 

page.open("http://www.example.com/", function(status) { 
    if (status === "success") { 
     page.onCallback(function(data) { 
      // got the data! 
      console.log(data); 
      phantom.exit(); 
     }); 
     page.includeJs(jqueryUrl, function() { 
      page.evaluate(function() { 
       $.getJSON('http://www.example.com/someJson', window.callPhantom); 
      }); 
     }); 
    } else { 
     phantom.exit(1); 
    } 
});