phantomjs 里面加了得ajax 同步为什么没效果

发布于 2022-09-02 00:51:56 字数 193 浏览 10 评论 0

page.evaluate(function(orderData) {

$.ajaxSetup({   async : false  }); 
 $.get(url,function(data){

});

});

上面是主要代码,我想让$.get 同步执行,可是没效果。。有朋友知道原因吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凯凯我们等你回来 2022-09-09 00:51:56

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() {}});
  });

 });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文