2016-09-15 5 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> 

アヤックス:

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

は自分if比較のためにelseを使用して助けてください。
更新:成功コールバックの間違った変数にアクセスしています。 textStatusに興味がない場合は、自分が戻ってきたデータを読んでみたいです。

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

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

を行います失敗した場合はdivと置き換えられ、結果が成功した場合にのみ発生します@low_rents – Snehal

+0

@Snehalは私の更新を見て、別の間違いを発見しました。 –

+0

訂正してくれてありがとう:-) @low_rents – Snehal

0

あなたはAJAX機能の成功コールバックのdata変数にこれらの情報にアクセスすることができます返されたJSONオブジェクトはdata変数に保存されます。

を使用すると、任意のJavaScriptオブジェクトのプロパティにアクセスするとそれが正常だ

data.message 
data.redirect 
data.result 

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.. 
      } 
     } 
    } 

ので、使用してこれらのデータにアクセスし、このようにそれを使用してください。

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(); 
       } 

     } 
    }, 
関連する問題