PhantomJS имеет два контекста. page.includeJs()
инструктирует контекст DOM (контекст страницы) для загрузки данного файла JavaScript. Обратный вызов вызывается, когда он выполняется. Это означает, что jQuery будет доступен только в контексте страницы, а не за его пределами. Вы получаете доступ к контексту страницы через page.evaluate()
.
Пример:
page.onConsoleMessage = function(msg){
console.log("remote> " + msg);
};
page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
page.evaluate(function(){
console.log('post:');
$.post("http://httbpin.org/post", function(data) {
console.log(data);
});
});
setTimeout(function(){
// don't forget to exit
phantom.exit();
}, 2000);
});
Вам придется работать PhantomJS с опцией --web-security=false
командной строки, в противном случае он не сможет отправить запрос из-за ограничений междоменных:
phantomjs --web-security=false script.js
Обратите внимание, что page.evaluate()
изолирован песочницей. Прочтите полностью documentation.
'$ jQuery' должен быть' jQuery' или '$'. Не оба. Также проверьте, что ваш URL-адрес возвращает что-то (наличие обработчика ошибок будет хорошим) – blex
@blex, я пробовал jQuery.post и $ .post, но он все равно ничего не возвращает .. –