async: false, 这个与原来可以解决同步问题。
同时,Ajax中返回bool值时都是不成功的。
- function refundUseCoupon(trxOrderGoodsId){
- $.ajax({
- type:'GET',
- url:'<%=contextPath%>/ucenter/getCouponPayment.do',
- data:{"trxGoodsId":trxOrderGoodsId},
- dataType:'json',
- cache : false,
- async:false,
- <pre name="code" class="javascript"> success:function(data){
- if((data.couponId != null) && (data.couponId !='') && (data.couponId>0) ){
- return true;
- }else{
- return false;
- }
- },
- error : function(error) {
- return false;
- }
- });
- return result;
- }</pre>
- <pre></pre>
- <br>
- 上面的函数,很简单,只作为提示用,想返回true和false,很简单,就是没注意。
- <p></p>
- <p>结果测试.alert:undefined</p>
- <p>下面是调用时的测试代码</p>
- <p></p>
- <pre name="code" class="javascript">// 调用测试
- funaction refund (){
- var refflag=false;
- refflag=refundUseCoupon(_id);
- alert(refflag);
- if(refflag){
- //
- }else{
- //
- }
- }</pre><br>
- 在上述的代码中已经return了。结果就是不返回。自己想了下。感觉在ajax中返回实际相当于没有返回值。
-
- <p></p>
- <p>类似:</p>
- <pre name="code" class="javascript">function refundUseCoupon(){
- aa();//ajax...aa方法相当于是ajax方法。所以怎么返回也是无效的。本方法没有返回。
- ......
- //应该在ajax外面执行return操作
- return true;
- }
-
- <p>下面的写法就可以了。</p>
- <p></p>
- <pre name="code" class="javascript">function refundUseCoupon(trxOrderGoodsId){
- var result=false;
- $.ajax({
- type:'GET',
- url:'<%=contextPath%>/ucenter/getCouponPayment.do',
- data:{"trxGoodsId":trxOrderGoodsId},
- dataType:'json',
- cache : false,
- async : false,
- success:function(data){
- if((data.couponId != null) && (data.couponId !='') && (data.couponId>0) ){
- result= true;
- }else{
- result= false;
- }
- },
- error : function(error) {
- result= false;
- }
- });
- return result;//在ajax之外执行return
- }</pre><br>
- 注意:async:false。设置为同步的,否则未等ajax执行完,就直接return初始的var resutt=false了。
在不加async: false,时