找不到db匹配时,AJAX错误函数不会抛出

时间:2013-12-23 23:07:31

标签: javascript jquery ajax

更新:

我有一个代码输入框,试图在数据库中找到匹配项。如果找到匹配,evrything可以工作,但是当找不到匹配时,我遇到了问题。请参阅下面的代码和结果以获得好的和坏的匹配。

这是我的代码:

function codeMatchTest() {
var discount;
if ($('#dbReturnString').val() == '') {
    alert("Please enter a discount code.");
} else {
$.ajax({
    type: "POST",
    url: "PROMO.svc/MatchCode",
    contentType: "application/json",
    async: false,
    dataType: "json",
    data: JSON.stringify({ codeInput: $('#dbReturnString').val().toLowerCase() }),
    success: function (json) {
        console.log(json.d);
        console.log(json.d[0].DISCOUNT);
        discount = JSON.parse(json.d);
        console.log(discount);
        console.log(json.d[0]["DISCOUNT"]);
        console.log(returnCustID());
        if (discount != null) {
            discount = discount[0].DISCOUNT;
        } else {
            alert("Not a valid code.");
            discount = 1;
        }
        //            alert("First: " + json.d[0]["DISCOUNT"] + " / Second: " + discount + " / Third: " + json.d);
        //            console.log("First: " + json.d[0]["DISCOUNT"] + " / Second: " + discount + " / Third: " + json.d);
        //            console.log(discount * 20);
    },
    error: function (json) {
        alert("There was an error with your request.");
    }
});
}
console.log(discount);
return discount;
}

以下是良好条目的控制台结果: [{ “折扣”:0.5}] 未定义 [宾语] 0:对象 折扣:0.5 proto :对象 长度:1 proto :数组[0] 未定义 27382 0.5

以下是错误的,不匹配的条目的结果: [] 未定义 [] 未定义 27382 未捕获的TypeError:无法读取未定义的属性“DISCOUNT”

当输入错误时,返回“[]”,我认为它只是一个空的json数组,但它也为json.d说“undefined”。我现在各种各样的困惑。我试过了许多不同的方式来说if(json.d是空的,null,不是=数字等等)并且似乎没有任何工作.Tring条件如if(discount[0].DISCOUNT >= 0) { run good code }也不起作用,beucase the 'undefined'或'[]'结果由于某种原因通过了这个条件。但它是空的,而不是> = 0 !!!

感谢任何帮助。这看起来很简单,给我带来了麻烦。

1 个答案:

答案 0 :(得分:1)

仅在服务器返回HTTP错误状态(例如,404,500等)时才调用error处理程序。如果服务中没有匹配项,您将不得不调整服务以返回HTTP错误状态,或者调整success处理程序以检查结果的值并适当地处理空响应。