@ZaurK

Почему получаю null?

Здравствуйте! В javascript я не очень, пытаюсь получить на выходе json-файл, но получаю null на выходе. Вот код:
var casper = require('casper').create();

casper.start('http://casperjs.org/', function() {});

var ggg = '123';
var gg = '12';
var g = '1';

casper.then(function() {
    var jsonStr = this.evaluate(function() {
        var outJson = {'name1': ggg, 'name2': gg, 'name3': g};
        return JSON.stringify(outJson);
    });

    this.echo('jsonStr: ' + jsonStr);
	fs.write(downloads/json.json, jsonStr, 'wb');
});

casper.run();

Тут у меня две проблемы, во-первых я вообще не получаю файл json, а во-вторых получаю для переменной jsonStr значение null. Если я меняю на это: var outJson = {'name1': 1, 'name2': 2, 'name3': 3}; то получаю значение json, но файл все равно не создается. Прошу подсказать, что не так в этом коде?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
@vshvydky
Обычно метод эвалют передается в браузер и ваши переменные в коде ему неизвестны , это первое.
Смотрим доку:
Signature: evaluate(Function fn[, arg1[, arg2[, …]]])

То есть на вашем примере, чтобы функция, которую вызовет браузер через эвалют получила ваши ггггг
, вам надо их передать, как-то так:
casper.then(function() {
    var jsonStr = this.evaluate(function(ggg,gg,g) {
        var outJson = {'name1': ggg, 'name2': gg, 'name3': g};
        return JSON.stringify(outJson);
    }, ggg, gg, g);

Второе, casper.start('casperjs.org', function() {}); выглядит как запуск с колбеком, так чего бы в колбеке и не работать?
Третье, если хотите использовать это как промис, попробуйте делать как в документаци:
casper.start('http://casperjs.org/');

casper.then(function() {
    this.echo('First Page: ' + this.getTitle());
});

Третье, вам нужно понять, что такие парсеры - это не линейный код, а функции, которые вы передаете нужным методам, для отработки в нужных местах.
Так как я пользуюсь другим парсером, возможно часть кода написана не совсем корректно, однако, вы можете развить мою мысль в нужном направлении.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Я хз что тут делается, но мб downloads/json.json должно быть в кавычках?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы