gpt4 book ai didi

javascript - Django json.loads(request.body) 给出错误期望值 : line 1 column 1

转载 作者:行者123 更新时间:2023-11-30 14:54:07 29 4
gpt4 key购买 nike

我正在尝试将 JSON 数据推送到我的 Django View ,GET 工作正常,但每次我尝试使用 json.loads(request.body)< 处理推送数据时 我明白了

raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我的 JavaScript

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(document).ready(function () {
var post = function () {

$.ajax({
type: "POST",
contentType: "application/json",
url: "http://127.0.0.1:8000/app/input",
data: {first_name: "Test", status: "testing"},
dataType: "json"
});
};
post();
})
</script>

浏览器的console.log是

{"baz": "goo", "foo": "bar"} jquery-3.2.1.min.js:4
POST http://127.0.0.1:8000/app/input 500 (Internal Server Error)

Django View

from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json

# Create your views here.
@csrf_exempt
def input(request):
if request.method == 'GET':
data = {'baz': 'goo', 'foo': 'bar'}
data = json.dumps(data)
return HttpResponse(json.dumps(data), content_type='application/json')
else:
data = request.body
print(request.body) #b'first_name=Test&status=testing'
print(type(request.body)) #<class 'bytes'>
decodebody = request.body.decode('utf-8')
print(decodebody) #first_name=Test&status=testing
print(type(decodebody)) #<class 'str'>
jsondata = json.loads(data)
print(jsondata)
print(type(jsondata))
return HttpResponse(data, content_type='application/json')

Django 日志

b'first_name=Test&status=testing'
<class 'bytes'>
first_name=Test&status=testing
<class 'str'>
[03/Dec/2017 13:00:49] "GET /app/input HTTP/1.1" 200 38
Internal Server Error: /app/input
Traceback (most recent call last):
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\onwar\PycharmProjects\JSONServer\computermanager\views.py", line 21, in input
jsondata = json.loads(data)
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\onwar\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[03/Dec/2017 13:00:49] "POST /app/input HTTP/1.1" 500 84429

我目前只是想看看我是否可以传递 JSON 并在返回之前修改名称,但我一直坚持这个错误。如果您需要更多信息或有任何疑问,请告诉我。

最佳答案

异常 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 告诉你 json.loads cannot parse request.body (因为您没有发送 JSON)。使用 JSON.stringify 将您的数据对象转换为 JSON 字符串。

json.loads 需要一个 JSON 字符串,这就是您需要使用 JSON.stringify 的原因。

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(document).ready(function () {
var post = function () {

$.ajax({
type: "POST",
contentType: "application/json",
url: "http://127.0.0.1:8000/app/input",
data: JSON.stringify({first_name: "Test", status: "testing"}),
dataType: "json"
});
};
post();
})
</script>

关于javascript - Django json.loads(request.body) 给出错误期望值 : line 1 column 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621716/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com