我设置了一个CasperJS脚本来调用我的web服务(在localhost:9000上运行)。CasperJS的sendAJAX异步标志设置为true失败
包含需要填充的参数的webservice。比方说一个金额参数,我的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
第四个参数,我设置了假,这意味着异步=假。那么,一切顺利async = false。该val变量成功返回json数据。
但是当我将false改为true时,会出现一个奇怪的事情。有时它会成功保存数据(使用我的web服务),但val不会返回正确的值(它为空,但它应该返回json数据)。但是当我在我的phpmyadmin上看到保存数据仍然是成功的。但有时也会发生(几乎总是发生),它不能保存数据量,仍然返回null(不是json数据)。
那么发生了什么事,在CasperJS sendAJAX中使用异步请求有问题吗?