我找了一圈,但似乎找不到一个有效的答案。我正在遵循Dennis Ivy的Django电子商务网站教程,但我遇到了一个问题,我试图添加一个项目到我的购物车,但没有发生,检查控制台,我得到以下两个错误:
POST http://127.0.0.1:8000/update_item/ 500(内部服务器错误)
js:26(获取行)
(匿名)@ cart.js:15(调用函数时)
127.0.0.1/:1 未捕获(在承诺中)语法错误:JSON中位置0处的意外标记〈
然后省略(异步)
js:39(第二个.然后)
(匿名)@ cart.js:15(调用函数时)
下面是我的JavaScript cart.js updateUserOrder函数:
function updateUserOrder(productId, action) {
console.log('User is logged in, sending data...')
var url = '/update_item/'
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': csrftoken,
},
body: JSON.stringify({ 'productId': productId, 'action': action })
})
.then((response) => {
return response.json()
})
.then((data) => {
location.reload()
});
}
下面是我的观点updateItem
:
def updateItem(request):
data = json.loads(request.body)
productId = data['productId']
action = data['action']
print('Action:', action)
print('Product:', productId)
customer = request.user.customer
product = Product.objects.get(id=productId)
order, created = Order.objects.get_or_create(customer=customer, complete=False)
orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)
if action == 'add':
orderItem.quantity = (orderItem.quantity + 1)
elif action == 'remove':
orderItem.quantity = (orderItem.quantity - 1)
orderItem.save()
if orderItem.quantity <= 0:
orderItem.delete()
return JsonResponse('Item was added', safe=False)
以下是我的URL,包括导入:
from checkout.views import updateItem
path('update_item/', updateItem, name="update_item"),
提前感谢!
2条答案
按热度按时间b09cbbtk1#
关于第一个错误
POST http://127.0.0.1:8000/update_item/ 500 (Internal Server Error)
,您需要检查服务器日志。关于第二个错误
127.0.0.1/:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
,从fetch()返回的Promise不会在HTTP错误状态下拒绝,即使响应是HTTP 500。相反,它将正常解决(ok状态设置为false)。因此,您需要添加代码来检查then()
中的响应,如下所示。xlpyo6sf2#
在ur JavaScript文件的location.reload()中,不应在大括号和圆括号后添加分号})