2016-09-15 133 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(); 
       } 

     } 
    }, 
相關問題