我正在尝试用phantomjs进行ajax调用。
我发现的唯一资源是:http://phantomjs.org/api/webpage/method/evaluate-async.html
虽然当我尝试通过evaluateasync进行ajax调用时,其中的代码未被执行。甚至是console.log('Async');没有打印。
有什么想法吗?
var webPage = require('webpage');
var page = webPage.create();
page.open("", function(status) {
page.includeJs("https://code.jquery.com/jquery-3.1.1.min.js", function() {
console.log('includejs');
page.evaluateAsync(function() {
console.log('Async');
$.ajax({
url : "some url",
type : 'post',
success : function(data) {
console.log(data);
console.log('success');
},
error : function(jqXHR, exception) {
console.log(jqXHR+'-'+exception);
console.log('error');
}
});
});
});});
答案 0 :(得分:1)
page.evaluateAsync
不会被忽略,只是console.log
函数内的page.evaluate/evaluateAsync()
与PhantomJS脚本中的page.onConsoleMessage = function(msg) {
console.log(msg);
};
不一样,它在沙盒环境,你必须订阅它:
console.log(jqXHR+'-'+exception);
此外,如果您尝试记录对象,例如
console.log(JSON.stringify(jqXHR)+'-'+exception);
您将获得[object Object]结果,而不是尝试
phantomjs --web-security=false evalasync.js
更重要:如果在打开一个网站后你要向另一个网站发出ajax请求,请使用--web-security = false开关运行你的脚本以允许跨域XHR。
max-width