在Ajax中,成功部分始终执行。但如果有错误,我不想执行正常;相反,我想显示一条错误消息。如果折扣代码存在然后显示/隐藏一些div以及代码然后重定向,否则显示我们在错误div中的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 :(得分:0)
只需使用else
进行if
比较
更新:您正在访问成功回调的错误变量。你对textStatus
不感兴趣,你想要自己阅读你要归还的数据。返回的json对象保存在data
变量中:
if(data.result == 'success'){
/* ... */
}else{
$(".error").text(data.msg);
}
答案 1 :(得分: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对象的属性时都是如此。
答案 2 :(得分:0)
如果你到了 {结果:&#34;失败&#34;,消息:&#34;代码无效&#34;,重定向: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(); } } },