这让我疯狂。JavaScript:JSON基于用户响应的条件
用户点击一个按钮来保留它。 AJAX根据预订是否成功返回一个值:预订成功,清除旧的预订,或因为某人已经预订而被阻止。该值返回到视图,并且该按钮根据用户的选择而改变。
我试过每一个可能的迭代,它不会工作。即使console.log表示值== 1,JS也不会承认该值== 1,并且每次都发送给我的错误消息。
views.py
@ensure_csrf_cookie
def reserve(request):
if request.is_ajax():
pk = request.POST['pk']
slot = Event.objects.get(pk=pk)
user = request.user
if slot.is_reserved == True:
if user == slot.teacher:
slot.is_reserved = False
slot.teacher = None
slot.save()
result = "1"
else:
result = "3"
else:
slot.is_reserved = True
slot.teacher = user
slot.save()
result = "2"
data = {'result': result}
return HttpResponse(json.dumps(data, cls=DjangoJSONEncoder))
//main.js
$(document).ready(function() {
var count = 0; //to reload the page
console.log('ready!' + count); //Sanity check
$('button').click(function() {
var pk = this.id
var user = $('button').attr("user")
$.ajax({
url: "/reserve/",
type: "POST", //Send the info to view
data: { pk : pk},
success: function(data) {
var number = JSON.parse(data);
if (number == 1) {
$(this).toggleClass("free reserved");
$.toast({
heading: "Reservation Clear!",
icon: 'success',
stack: 4,
hideAfter: 2000,
bgColor: '#003366'
});
}
if (number == 2) {
$(this).toggleClass("free reserved");
$("div.tchr").html(user); //Send user info to button, reverts on refresh
$.toast({
heading: "Reservation Complete!",
icon: 'success',
stack: 4,
hideAfter: 2000
});
}
if (number == 3) {
alert("Sorry! This has already been reserved (maybe refresh your browser)")
}
else {
console.log("Something is wrong. Something is wrong. Something is wrong")
}
count++;
console.log(count)
if (count > 3) {
location.reload();
};
}
}); // End AJAX
});
});
我试过在两端使用引号,JSON.Stringify,甚至创建一个与字典相同的变量。帮帮我!
谢谢!我想出了什么令人困惑 - 条件工作,但我也从“其他”接收console.log。任何想法为什么? –
你没有使用“else if”尝试。如果最后一个if检查是3,如果它是1或2,它仍然会在else中,请考虑使用switch语句。 – Mike