在使用 AJAX 和 Django 进行开发时,遇到 parsererror
和 意外的token <
错误通常是由于以下几个原因造成的:
application/json
,并在 AJAX 请求中设置正确的 dataType
。# Django 视图
from django.http import JsonResponse
def my_view(request):
data = {'key': 'value'}
return JsonResponse(data)
// AJAX 请求
$.ajax({
url: '/my-endpoint/',
method: 'GET',
dataType: 'json', // 确保这里设置为 json
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.error("Error: ", status, error);
}
});
# Django 视图
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
if request.method == 'GET':
data = {'key': 'value'}
return JsonResponse(data)
else:
return JsonResponse({'error': 'Method not allowed'}, status=405)
django-cors-headers
库来处理跨域请求。# settings.py
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = True # 或者指定允许的源
jsonlint.com
)验证 JSON 数据的正确性。# Django 视图
import json
from django.http import JsonResponse
def my_view(request):
data = {'key': 'value'}
try:
json_data = json.dumps(data)
except TypeError as e:
return JsonResponse({'error': str(e)}, status=500)
return JsonResponse(json.loads(json_data))
以下是一个完整的示例,展示了如何在 Django 中处理 AJAX 请求并返回 JSON 数据:
# views.py
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
if request.method == 'GET':
data = {'key': 'value'}
return JsonResponse(data)
else:
return JsonResponse({'error': 'Method not allowed'}, status=405)
// script.js
$.ajax({
url: '/my-endpoint/',
method: 'GET',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.error("Error: ", status, error);
}
});
通过以上步骤,可以有效解决 AJAX 和 Django 中 JSON 数据解析错误的问题。
没有搜到相关的沙龙