Uncaught SyntaxError: Unexpected identifier at my fetch headers
Uncaught SyntaxError: Unexpected identifier at my fetch headers
我尝试运行服务器,它运行了,但我的 chrome 控制台在 headers 处识别出错误,并且它没有执行添加到购物车。
我已经刷新我的页面好几次了。 P 甚至多次关闭我的服务器和 运行 我的服务器,但同样的问题仍然存在。
我的 csrf 令牌在我的 main.html
中定义
<!DOCTYPE html>
{% load static %}
<html>
<head>
<title>Ecom</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="匿名">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1" />
<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}">
<script type="text/javascript">
var user = '{{request.user}}'
function getToken(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== ''){
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
// Does tis cookie string begin with the name we want? if not we can change it
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue
}
var csrftoken = getToken('csrftoken')
</script>
我的Cart.js文件
var updateBtns = document.getElementsByClassName('update-cart')
for (var i = 0; i < updateBtns.length; i++) {
updateBtns[i].addEventListener('click', function(){
var productId = this.dataset.product
var action = this.dataset.action
console.log('productId:',productId, 'action:',action)
console.log('USER:',user)
if (user === 'AnonymousUser') {
console.log('user is not logged in')
}else{
updateUserOrder(productId, action)
}
})
}
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) =>{
console.log('data:', data)
})
}
这是我的views.py,它不会在我的控制台上执行
我的views.py
from django.shortcuts import render
from django.http import JsonResponse
import json
from .models import *
# Create your views here.
def store(request):
products = Product.objects.all()
context = {'products':products}
return render(request, 'store/Store.html', context)
def cart(request):
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
items = order.orderitem_set.all()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context = {'items':items, 'order':order}
return render(request, 'store/Cart.html', context)
def checkout(request):
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
items = order.orderitem_set.all()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context = {'items':items, 'order':order}
return render(request, 'store/Checkout.html', context)
def updateItem(request):
data = json.loads(request.data)
productId = data['productId']
action = data['action']
print('Action:', action)
print('productId:', productId)
return JsonResponse('item added to cart', safe=False)
您的提取语法应该在方法和 headers
之后有一个逗号 (,)
正确的语法是
方法:“POST”,
headers: {.......},
body:JSON.stringify({....})
我尝试运行服务器,它运行了,但我的 chrome 控制台在 headers 处识别出错误,并且它没有执行添加到购物车。
我已经刷新我的页面好几次了。 P 甚至多次关闭我的服务器和 运行 我的服务器,但同样的问题仍然存在。
我的 csrf 令牌在我的 main.html
中定义<!DOCTYPE html>
{% load static %}
<html>
<head>
<title>Ecom</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="匿名">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1" />
<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}">
<script type="text/javascript">
var user = '{{request.user}}'
function getToken(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== ''){
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
// Does tis cookie string begin with the name we want? if not we can change it
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue
}
var csrftoken = getToken('csrftoken')
</script>
我的Cart.js文件
var updateBtns = document.getElementsByClassName('update-cart')
for (var i = 0; i < updateBtns.length; i++) {
updateBtns[i].addEventListener('click', function(){
var productId = this.dataset.product
var action = this.dataset.action
console.log('productId:',productId, 'action:',action)
console.log('USER:',user)
if (user === 'AnonymousUser') {
console.log('user is not logged in')
}else{
updateUserOrder(productId, action)
}
})
}
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) =>{
console.log('data:', data)
})
}
这是我的views.py,它不会在我的控制台上执行
我的views.py
from django.shortcuts import render
from django.http import JsonResponse
import json
from .models import *
# Create your views here.
def store(request):
products = Product.objects.all()
context = {'products':products}
return render(request, 'store/Store.html', context)
def cart(request):
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
items = order.orderitem_set.all()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context = {'items':items, 'order':order}
return render(request, 'store/Cart.html', context)
def checkout(request):
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
items = order.orderitem_set.all()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context = {'items':items, 'order':order}
return render(request, 'store/Checkout.html', context)
def updateItem(request):
data = json.loads(request.data)
productId = data['productId']
action = data['action']
print('Action:', action)
print('productId:', productId)
return JsonResponse('item added to cart', safe=False)
您的提取语法应该在方法和 headers
之后有一个逗号 (,)正确的语法是 方法:“POST”, headers: {.......}, body:JSON.stringify({....})