page.evaluate(function(orderData) {
$.ajaxSetup({ async : false }); $.get(url,function(data){ });
});
上面是主要代码,我想让$.get 同步执行,可是没效果。。有朋友知道原因吗?
sorry,理解错问题的意思了
你运行下这个看看
var webpage=require('webpage'); var url="http://segmentfault.com"; var page=webpage.create(); page.onLoadFinished = function(status){ if(status==="success"){ var result=page.evaluate(function(){ var url="http://segmentfault.com/q/1010000004337401?_ea=575071"; var result=""; $.ajaxSetup({ async : false }); $.get(url,function(data){ result=data; }); return result; }); console.log('result:%s',result); phantom.exit(); } }; page.open(url);
之前的回答1.webpage页面上有jQuery类库~~2.page.evaluate是个同步方法,也就是传入evaluate方法的函数执行完了,就返回,可以取到返回值3.想要异步调用,要是用page.evaluateAsync方法,无法取到返回值。异步调用获取的数据只能作用到你操作的web页面上 官方例子: page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", >function() { page.evaluateAsync(function() { $.ajax({url: "api1", success: function() {}}); }); page.evaluateAsync(function() { $.ajax({url: "api2", success: function() {}}); }); });
之前的回答1.webpage页面上有jQuery类库~~2.page.evaluate是个同步方法,也就是传入evaluate方法的函数执行完了,就返回,可以取到返回值3.想要异步调用,要是用page.evaluateAsync方法,无法取到返回值。异步调用获取的数据只能作用到你操作的web页面上
page.evaluate
page.evaluateAsync
官方例子:
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", >function() { page.evaluateAsync(function() { $.ajax({url: "api1", success: function() {}}); }); page.evaluateAsync(function() { $.ajax({url: "api2", success: function() {}}); }); });
sorry,理解错问题的意思了
你运行下这个看看