我设置了一个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数据。
但是,当我将虚假变为真时,它会出现一个奇怪的事情。有时它成功保存数据(使用我的webservice),但val没有返回正确的值(它是null,但它应该返回json数据)。但是当我在phpmyadmin上看到时,保存数据仍然是成功的。但有时也(几乎总是发生),它无法保存数据量,仍然,返回null(不是json数据)
所以发生了什么,在CasperJS sendAJAX中使用异步请求有问题吗?