PhantomJS getJSON无法获得响应

时间:2017-03-20 17:51:07

标签: phantomjs getjson

我试图在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);
    }
});

感谢您的帮助!

1 个答案:

答案 0 :(得分: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);
    }
});