【发布时间】:2018-02-12 13:16:24
【问题描述】:
每当我在 Django 中通过 AJAX 发布请求发送 JSON 对象时,都会出现以下错误。
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
html 中的代码:
$("#submit").click(function(){
var finalData{};
finalData.name = $('#name').val();
finalData.email = $('#email').val();
finalData.password = $('#password').val();
finalData.website = $('#website').val();
$.ajax({
url: window.location.pathname,
type: "POST",
data :finalData,
success: function(){
},
error: function(){
}
});
});
});
<form method = "POST" >
{% csrf_token %}
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" id="name" placeholder="Enter name" name="name" required>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email" >
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd" >
</div>
<div class="form-group">
<label for="name">Website:</label>
<input type="text" class="form-control" id="website" placeholder="Enter website" name="website">
</div>
<div class="checkbox">
<label><input type="checkbox" name="remember"> Remember me</label>
</div>
<button type="submit" id="submit" class="btn btn-default">Submit</button>
</form>
Python 代码:
def signup(request):
if request.method == 'POST':
body = request.body
response_json = body.decode('utf-8')
x = json.loads(response_json)
print(x)
return render(request, 'signup.html', {})
else:
return render(request, 'signup.html', {})
我可以在 Python 中使用以下命令打印响应
print(request.body)
示例 JSON 数据对象:
{
name: test,
email: test@gmail.com,
password: test,
website: www.test.com
}
我到底错过了什么?
【问题讨论】:
-
试试这个
data: JSON.stringify(finalData),contentType: "application/json", -
@Macintosh_89 在添加数据类型后尝试:“json”。但我遇到了同样的错误。
-
我已经编辑了我的答案
-
@Macintosh_89 尝试了编辑代码,但也没有用。
-
你的实际代码对我来说很好。
标签: python jquery json ajax django