期待どおりにデータを投稿しない次のコードがあります
var casper = require('casper').create();
var myData;
var utils = require('utils');
casper.start();
casper.then(function () {
myData = {"source":"casperjs"};
utils.dump(myData);
});
casper.thenOpen('http://my-api/api/upload/', {
method: "post",
data: JSON.stringify(myData),
headers: {
"Content-Type":"application/json"
}
}, function () {
utils.dump(myData);
});
casper.run();
メッセージはサーバーに送信されましたが、有効なデータがありません。ただし、このようにthenOpen (...)をthen (...) に移動すると
casper.then(function () {
myData = {"source":"casperjs"};
utils.dump(myData);
this.thenOpen('http://my-api/api/upload/', {
method: "post",
data: JSON.stringify(myData),
headers: {
"Content-Type":"application/json"
}
}, function () {
utils.dump(myData);
});
});
その後、投稿は成功します。または、元のコードのthenOpen部分を変更した場合 (つまり、このようにcasper.then(...)部分に移動せずに)
casper.thenOpen('http://my-api/api/upload/', {
method: "post",
data: JSON.stringify({"source":"casperjs"}),
headers: {
"Content-Type":"application/json"
}
}, function () {
utils.dump(myData);
});
その後、投稿も成功します。そのため、 thenOpen(...)が表示されたときにmyDataを初期化する必要があるようです。それで、これは期待されているのですか、それとも私は何か間違ったことをしましたか? この動作に関する参照が見つかりませんでした。ありがとう!