【发布时间】:2015-01-31 18:28:47
【问题描述】:
我设置了一个 CasperJS 脚本来调用我的 Web 服务(在 localhost:9000 上运行)。
webservice 包含需要填写的参数。假设一个金额参数,我的网络服务从它的参数中保存金额数据。所以我这样写了我的 CasperJS 脚本:
casper.then(function(){
val = this.evaluate(function(){
//do step #1 ajax request
var country_amount = 9;
var params = "amount="+country_amount;
var data = "amount="+country_amount;
var wsurl = "http://localhost:9000/TempCountryAmountREST/setCountryAmount?amount="+country_amount;
//window.__utils__.echo("Country Amount :"+country_amount);
return JSON.parse(__utils__.sendAJAX(wsurl, "POST" , null, false, { contentType: "application/json" }));
});
});
如您所见,在__utils__.sendAJAX的第四个参数中,我设置为false,即asynchronous = false。好吧,async = false 一切顺利。该 val 变量成功返回 json 数据。
但是当我将 false 更改为 true 时,它会出现一个奇怪的事情。有时它成功保存了数据(使用我的 web 服务),但 val 没有返回正确的值(它为 null,但它应该返回 json 数据)。但是当我在我的 phpmyadmin 上看到时,保存数据仍然成功。但有时也是如此(几乎总是发生),它无法保存数量数据,并且仍然返回 null(不是 json 数据)
那么这是怎么回事,在 CasperJS sendAJAX 中使用异步请求有问题吗?
【问题讨论】: