更新:
我有一个代码输入框,试图在数据库中找到匹配项。如果找到匹配,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 !!!
感谢任何帮助。这看起来很简单,给我带来了麻烦。
答案 0 :(得分:1)
仅在服务器返回HTTP错误状态(例如,404,500等)时才调用error
处理程序。如果服务中没有匹配项,您将不得不调整服务以返回HTTP错误状态,或者调整success
处理程序以检查结果的值并适当地处理空响应。