在CasperJS中发送Ajax请求并循环结果

时间:2015-10-15 04:00:16

标签: javascript phantomjs casperjs

我目前正在尝试从GET调用中获取json值(主要是url)并将其分配给变量。我会极其喜欢循环遍历值并用casper打开每个url。但是,我看到通过使用casperjs的ajax调用获取值的概念不正确。我仔细阅读了文档,但似乎不明白为什么我仍然会收到错误ReferenceError: Can't find variable: __utils__

casper.start();
var url = "http://dev.web-ui.com/generate.php";

casper.then(function(url) {
    var results = __utils__.sendAJAX(url, "GET");
});

casper.run();

2 个答案:

答案 0 :(得分:1)

你至少有两个问题:

  • url参数不是URL,而是包含URL的最后加载的页面资源对象。

  • __utils__在页面上下文之外不可用。如果需要,您可以要求它,但这可能无法解决您的问题,因为页面上下文之外的虚拟document.location与您要查询的URL没有相同的域,因此请求可能会失败跨域限制。最好在页面上下文中执行此操作。

示例代码:

casper.then(function(resource) {
    var results = this.evaluate(function(url){
         return __utils__.sendAJAX(url, "GET");
    }, resource.url);
    this.echo(results);
});

答案 1 :(得分:0)

你是否在考试中?如果是这样,也许var __utils__ = require('clientutils').create();会修复它。不幸的是,我现在不能自己尝试。