我试图在PhantomJS中使用$ .getJSON,但无法获得结果。有解决方案吗我不能直接加载或包含JS。必须从同一个域调用该页面。
所以我想打开一个页面并从那里打电话。
这是我当前的代码无效:
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 :(得分:1)
您需要将page.onCallback
与window.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);
}
});