[PhantomJS] 팬텀JS evaluate 에서 ajax 실행
PhantomJS를 이용해 서비스 개발 중 evaluate 안에서 AJAX 처리가 필요한 경우가 있어 아래 코드를 작성했다. 대상 웹페이지에 jQuery는 이미 로드된 상태라고 가정한다.
"use strict";
var sys = require("system");
var page = require("webpage").create();
var args = sys.args;
page.open('http://example.com', function(status) {
var text = page.evaluate(function(arg) {
var result;
var category = arg[1];
jQuery.ajax({
async: false,
cache: false,
dataType:"json",
url: "http://example.com/api/v1/sales",
data: ({category: category}),
success: function(data) {
result = data.sales;
}
});
return result;
}, args);
console.log(text);
phantom.exit();
});
코드의 핵심은 async: false 로 요청 처리를 동기식으로 처리해서 결과를 받는 것이다.