代码之家  ›  专栏  ›  技术社区  ›  matt

带有JSON.parse的容器JS

  •  2
  • matt  · 技术社区  · 11 年前

    当我运行以下代码时,我会得到以下内容:

    TypeError:“undefined”不是函数(正在计算“this.emit('error',error)”)

    我早些时候问过这个问题,但我换了一种说法。在casper函数中,JSON对象似乎未定义。

    如果我在外部执行JSON.parse(),那么它不是未定义的。

    关于如何实现这一点的想法?

    var casper = require("casper").create({
        verbose: true,
        logLevel: 'debug',
    });
    
    var site = 'http://my.internalsite.com';
    
    casper.start(site);
    
    casper.run(function() {
        var currentURL = this.getCurrentUrl();
        this.echo('URL: ' + currentURL);
        var json_string = JSON.parse(this.getPageContent());
        this.echo(json_string);
        this.exit();            
    });
    
    1 回复  |  直到 11 年前
        1
  •  4
  •   hexid    11 年前

    这可能是由于 this.exit() 之前接到电话 JSON.parse(this.getPageContent())

    您可以尝试以下操作:

    var casper = require("casper").create({
        verbose: true,
        logLevel: 'debug',
    });
    
    var site = 'http://xkcd.com/info.0.json';
    
    casper.start(site);
    
    casper.then(function() {
        var currentURL = this.getCurrentUrl();
        this.echo('URL: ' + currentURL);
        var json_string = JSON.parse(this.getPageContent());
        require('utils').dump(json_string);
    });
    
    casper.run();