2012-11-09 11 views
6

में AJAX का उपयोग कर किसी पृष्ठ के लिए दूरस्थ डेटा प्राप्त करना कैस्परजेएस स्क्रिप्ट निष्पादित करने के दौरान मुझे किसी अन्य साइट से JSON डेटा लाने और विश्लेषण करने की आवश्यकता है ताकि मैं उस डेटा का उपयोग उस साइट पर फ़ॉर्म भरने के लिए कर सकूं सक्रिय रूप से काम कर रहा है।CasperJS

मैं यह कैसे कर सकता हूं?

+0

xmlhttprequest का उपयोग करके? – NiKo

+0

अगर मैं jQuery का उपयोग कर रहा था तो मैं ऐसा करूँगा। CasperJS के साथ ऐसा करने का सबसे अच्छा तरीका नहीं पता। ध्यान रखें कि यह एक क्रॉस डोमेन अनुरोध है, जिसे मैं कैस्पर के भीतर एक समस्या होने की उम्मीद नहीं करता हूं। – 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 शीर्षलेख संपादित करना चाहता हूं? मैंने देखा कि एक [चर्चा] (https://groups.google.com/forum/#!msg/phantomjs/z9WVs0SwiwM/eHifuw5RJNIJ) इसे phantomjs में जोड़ने के बारे में था, लेकिन मुझे यकीन नहीं है कि यह कहीं भी हो गया है .. सलाह? – abbood

+0

@NiKo मुझे लगता है कि यह संभव नहीं है [अभी तक] (https://github.com/ariya/phantomjs/issues/10745) – abbood