【发布时间】:2017-08-24 10:02:44
【问题描述】:
这快把我逼疯了。
用户点击一个按钮来保留它。 AJAX 根据预订是否成功返回一个值:预订成功、清除旧预订或因为有人已经预订而被阻止。该值会返回到视图,并且按钮会根据用户的选择进行更改。
我已经尝试了所有可能的迭代,但它不起作用。即使 console.log 说 value == 1,JS 也不会承认 value == 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,甚至创建一个与字典相同的 var。救命!
【问题讨论】:
标签: javascript jquery json