使用jquery.go.js检索原始HTTP响应

时间:2016-02-07 09:09:35

标签: javascript jquery phantomjs

我对Jquery,node.js,Phantom.js和JavaScript都很陌生,并且在我的所有内容中都有一些问题。

我正在使用Jquery.go.js(https://github.com/travist/jquery.go.js)处理一个简单的脚本,它应该登录到一个站点,然后访问一个特定的资源并解析它返回的响应(JSON)

到目前为止,我设法让登录工作正常,但现在我真的迷失了第二部分。

到目前为止我所基于的是https://github.com/travist/makemeasandwich.js

var async =   require('async'),
$ =       require('jquerygo'),
path =    require('path'),
fs =      require('fs');

// Add some default configs.
$.config.site = 'https://host.com';
$.config.addJQuery = false;

var login = function(done) {
  async.series([
    $.go(false, 'visit', '/login'),
    $.go(false, 'waitForElement', '#email'),
    debugCapture('login1'),
    $('#email').go('val', 'email@example.com'),
    $('#password').go('val', 'securepassword'),
    debugCapture('login2'),
    $("form").go('attr','id','validForm'),
    $('#validForm').go('submit'),
    sleep(3000),
    debugCapture('login3'),
    print('Successfully logged in.'),
    sleep(3000),
  ], done);
};

var viewJournalEntries = function(done){

  $.config.addJQuery = true;
  async.series([
    $.go(false, 'visit', '/api/journals/show/546'),
    $.getPage(function(page) {
      // Is this right, what do I need to do here??
    }),
    debugCapture('step2'),
    ],done);
}

var debugCapture = function(fileName) {
  // if (config.get('debug')) {
    return capture(fileName);
  // }
  return function(done) { done(); }
};

/**
 * Method to capture and ensure the screenshots directory exists.
 */
var capture = function(fileName) {
  // Return the async function.
  return function(done) {

    // The directory to store the screenshots.
    var dir = __dirname + '/screenshots-ls';

    // Check that the directory exists.
    fs.exists(dir, function(exists) {
      if (exists) {
        $.capture(dir + '/' + fileName + '.png', done);
      }
      else {
        fs.mkdir(dir, function(err) {
          if (err) return done(err);
          $.capture(dir + '/' + fileName + '.png', done);
        });
      }
    });
  }
}

/**
 * Helper to print something when it is executed.
 *
 * @param {type} text
 * @returns {unresolved}
 */
var print = function(text) {
  return function(done) {
    console.log(text);
    done();
  };
};

/**
 * Helper function to take a pause...
 *
 * @param {type} time
 * @returns {unresolved}
 */
var sleep = function(time) {
  return function(done) {
    setTimeout(done, time);
  };
};

async.series([
  login,
  viewJournalEntries,
], function() {
  $.close();
});

登录就像一个魅力,我可以调用viewJournalEntries函数调用url / api / journals / show / 546返回一个典型的JSON字符串,如下所示:

{"data":{"id":546,"user_id":1,[etc...]

屏幕截图证明它有效,但我不知道如何继续将JSON转换为我可以解析的变量。

感谢任何帮助/指示。

谢谢, 本

0 个答案:

没有答案