Javascript 未找到数据库匹配项时未抛出AJAX错误函数

Javascript 未找到数据库匹配项时未抛出AJAX错误函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,更新: 我有一个代码输入框,试图在数据库中找到匹配项。如果找到了匹配项,所有的东西都会工作,但如果没有找到匹配项,我就有问题了。请参阅下面我的代码和结果,了解好匹配和坏匹配 这是我的密码: function codeMatchTest() { var discount; if ($('#dbReturnString').val() == '') { alert("Please enter a discount code."); } else { $.ajax({ type: "P

更新:

我有一个代码输入框,试图在数据库中找到匹配项。如果找到了匹配项,所有的东西都会工作,但如果没有找到匹配项,我就有问题了。请参阅下面我的代码和结果,了解好匹配和坏匹配

这是我的密码:

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 原型:对象 长度:1 proto:数组[0] 未定义 27382 0.5

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

当输入一个错误的条目时,会返回“[]”,我认为这只是一个空的json数组,但它也会对json.d表示“未定义”。我现在有点困惑。我尝试了许多不同的方法来表示(json.d是空的,null,not=到一个数字,等等…)但似乎什么都不起作用。字符串有条件,例如
if(折扣[0]。折扣>=0){run good code}
也不起作用,因为某种原因,请使用“undefined”或“[]”结果通过此条件。但它是空的,并且不>=0


非常感谢您的帮助。这看起来很简单,给我带来了很多麻烦。

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

我的返回不准确-忘记了我更改了一些内容。这在我的控制台上:Uncaught TypeError:无法读取未定义promo.js:46$.ajax.success promo.js:46 c jquery-1.10.2.js:5 p.fireWith jquery-1.10.2.js:5 k jquery-1.10.2.js:14 r jquery-1.10.2.js:14发送jquery-1.10.2.js:14 x.extend.ajax jquery-1.10.2.js:14代码匹配promo.js:35 updateTotal cart.js:292 applromypo promo.js:234单击“编辑”按钮“您可以直接更新您的问题,而不是试图将新信息塞进评论中。创建一组错误代码,并在您的
success
handler.Noted中检查。我看不到我可以编辑我的帖子。谢谢。控制台说“无法读取未定义的属性‘折扣’。”-因此,如果返回是未定义的,它会是一个空的json数组吗?有一次我得到“[]”返回,这似乎是有意义的。返回的实际数据将取决于您的服务实现。空数组是一种逻辑可能性,但它也可能根本不返回有效负载。我已经尝试了所有方法来处理空json结果。它是'[]'或'undefined',这取决于我发送到控制台的内容。我尝试了两个条件,但总是出现错误。我如何处理'[]'或'undefined'?我更新了上面的代码和控制台结果,以显示从何处获得这些结果。我只想说,{discount='[]'){alert(“无效条目”)}或者{run good code}如果你只对虚假感兴趣,那么使用类似于
If(!discount | | discount.length==0){/*invalid*/}else{/*valid*/}