2016-09-15 60 views
0

在Ajax中,成功部分总是执行。但是如果出现错误,我不想执行正常;相反,我想显示错误消息。如果折扣代码存在,然后显示/隐藏一些div与代码,然后重定向,否则显示错误消息,我们在错误div中的json响应。我怎样才能做到这一点?如果json结果失败,如何显示错误信息?

这里是JSON响应:

{result: "fail", msg: "Code is not valid", redirect: 0} 

控制器:

if($result == 'exp'){ 
    $discount_arr ['result'] = 'fail'; 
    $discount_arr['msg'] = 'Promotion code expired'; 
    $discount_arr['redirect'] = 0; 
}else{ 
    $discount_arr ['result'] = 'success'; 
    $discount_arr['msg'] = 'Valid Code'; 
    $discount_arr['url'] = base_url('cart'); 
    $discount_arr['redirect'] = 1; 
} 
echo json_encode($discount_arr); 

HTML:

<div class="cart-secondary cart-discount-code"> 
     <label for="cart_Code"> 
     Discount Code </label> 
     <input type="text" class="discount-code" name="cart_discountCode" id="cart_discountCode"> 
     <span class="error coupon-error"></span> 
     <div class="confirm-coupon"></div> 
     <button type="submit" value="addCoupon" name="addCoupon" id="add-coupon" onclick="checkStatus()"> 
     Apply </button> 

的Ajax:

function checkStatus(){ 
var discount_code = $(".cart-secondary .cart-discount-code .discount-code").val(); 

$.ajax(
{ 
    url  : "<?php echo base_url('cart/validate/'); ?>", 
    type : "POST", 
    data : {discount_code: discount_code} , 
    cache  : false, 
    dataType:'json', 
    statusCode: { 
     404: function() { 
      alert("page not found"); 
     } 
    }, 
    success:function(data, textStatus, jqXHR) 
    { 
     if(textStatus == 'success'){ 
       $('input[name=cart_discountCode]').val(discount_code); 
       $('.cart-secondary .cart-discount-code-show span').html(discount_code); 
       $(".cart-discount-code").fadeOut(); 
       $(".cart-discount-code-show").fadeIn(); 
       if(data.redirect){ 
        window.location.reload(); 
       } 

     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     //if fails 
     console.log(errorThrown); 
    } 
}); 
} 

请帮

回答

0

只需使用一个elseif比较。
更新:您正在访问成功回调的错误变量。你对textStatus不感兴趣,你想读你自己回来的数据。返回的JSON对象保存在data变量:

if(data.result == 'success'){ 
    /* ... */ 

}else{ 
    $(".error").text(data.msg); 
} 
+0

即使我的结果是失败的,它取代了div和所有应该发生的只有当结果是成功@low_rents – Snehal

+0

@Snehal看到我的更新,我发现了另一个错误。 –

+0

感谢您纠正:-) @low_rents – Snehal

0

您可以在AJAX功能的成功回调的data变量访问这些信息。

使用它像这样,

success:function(data, textStatus, jqXHR) 
    { 
     if(data.result != 'fail'){ 
       $('input[name=cart_discountCode]').val(discount_code); 
       $('.cart-secondary .cart-discount-code-show span').html(discount_code); 
       $(".cart-discount-code").fadeOut(); 
       $(".cart-discount-code-show").fadeIn(); 
       if(data.redirect){ 
        window.location.reload(); 
       } 

     } else { 
      alert(redirect.message); 
      if(data.redirect==1) { 
       // redirect here.. 
      } 
     } 
    } 

因此,使用访问这些数据,

data.message 
data.redirect 
data.result 

它通常会在您访问的任何JavaScript对象的属性。

0

如果你正在 {结果: “失败”,味精: “代码无效”,重定向:0}成功块,

然后做到这一点

 
success:function(data, textStatus, jqXHR) 
    { 
     if(data.result !== 'fail' && textStatus == 'success'){ 
       $('input[name=cart_discountCode]').val(discount_code); 
       $('.cart-secondary .cart-discount-code-show span').html(discount_code); 
       $(".cart-discount-code").fadeOut(); 
       $(".cart-discount-code-show").fadeIn(); 
       if(data.redirect){ 
        window.location.reload(); 
       } 

     } 
    }, 
相关问题