未捕获的 SyntaxError:我的提取标头中有意外的标识符

Posted

技术标签:

【中文标题】未捕获的 SyntaxError:我的提取标头中有意外的标识符【英文标题】:Uncaught SyntaxError: Unexpected identifier at my fetch headers 【发布时间】:2021-08-05 18:22:22 【问题描述】:

我尝试运行服务器并且它运行但我的 chrome 控制台在标题处识别错误并且它确实 npt 执行添加到购物车。

我已经多次刷新了我的页面。 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" 完整性="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

 <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,它不在我的控制台上执行

我的意见.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)![enter image description here](https://i.stack.imgur.com/zOztb.jpg)

【问题讨论】:

你在哪里定义了 csrftoken 令牌? 在我的 main.html 中 【参考方案1】:

您的 fetch 语法应该在方法和标头之后有一个逗号 (,)

正确的语法是 方法:“POST”, 标题:....., 正文:JSON.stringify(....)

【讨论】:

以上是关于未捕获的 SyntaxError:我的提取标头中有意外的标识符的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的 SyntaxError:意外的令牌导入 - Reactjs

Javascript:未捕获的 SyntaxError:意外的令牌 <

jquery.d.ts 文件中未捕获的 SyntaxError

ASP.NET - 未捕获的 SyntaxError:无法在模块外使用 import 语句

使用带有 JSONP 的 AJAX 未捕获的 SyntaxError 和 CORS 错误

未捕获的 SyntaxError:JS 和 CSS 文件中的非法字符 U+001F