我有以下代码没有按预期发布数据
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);
});
那么帖子也会成功。所以看起来myData必须在看到thenOpen(...)时进行初始化。这是预期的还是我做错了什么?我找不到有关此行为的参考。谢谢!