2012-11-09 18 views
6

CasperJSスクリプトを実行する過程で、別のサイトからJSONデータを取得して解析し、そのデータをサイトのフォームに記入する必要があります積極的に取り組んでいます。CasperJSでAJAXを使用してページのリモートデータを取得する

どうすればいいですか?

+0

xmlhttprequestを使用すると、 – NiKo

+0

これは、jQueryを使用していた場合のやり方です。 CasperJSでこれを行う最適な方法を知らないでください。これはクロスドメインリクエストであり、私はcasper内で問題になるとは思わないことに注意してください。 – eComEvo

答えて

8

あなたは__utils__.sendAJAX()を使用することができます。

var casper = require('casper').create(); 
var wsurl = 'https://raw.github.com/n1k0/casperjs/master/package.json'; 
var word; 

casper.start('http://google.com/', function() { 
    word = this.evaluate(function(wsurl) { 
     try { 
      return JSON.parse(__utils__.sendAJAX(wsurl, 'GET', null, false)).name; 
     } catch (e) { 
     } 
    }, {wsurl: wsurl}); 
}); 

casper.then(function() { 
    if (!word) { 
     this.die('unable to retrieve word'); 
    } 
    this.echo('searching for ' + word); 
    this.fill('form[action="/search"]', {q: word}, true); 
}); 

casper.run(function() { 
    this.echo(this.getCurrentUrl()); 
    this.exit(); 
}); 

サンプルの実行(--web-security=noに合格することを忘れないでください):

$ casperjs test.js --web-security=no 
searching for casperjs 
http://www.google.fr/search?hl=fr&source=hp&q=casperjs&gbv=2&oq=&gs_l= 

はそれがお役に立てば幸いです。

+0

パーフェクト!ありがとう! :) – eComEvo

+0

@NiKoもし私がajaxリクエストのhttpヘッダを編集したいのであれば?私はそこにphantomjsでそれを追加することについての(ディスカッション)(https://groups.google.com/forum/#!msg/phantomjs/z9WVs0SwiwM/eHifuw5RJNIJ)が見えましたが、どこにアドバイスがあるのか​​分かりません。 – abbood

+0

@NiKo私はそれができないと思う[未だ](https://github.com/ariya/phantomjs/issues/10745) – abbood

関連する問題