django - Ajax: SyntaxError: Unexpected token < in JSON at position 2
问题描述
当用户单击复选框时,我正在尝试使用 ajax 更新我的数据库。
我收到以下错误消息
SyntaxError: Unexpected token < in JSON at position 2
parsererror
从我读到的内容来看,这是因为它得到的是 html 响应而不是 json 响应。但是它甚至没有执行我的post_form_api
视图(它没有运行我的打印语句)所以我不知道它从哪里得到这个响应。
我没有使用表单,因为我没有看到需要,尽管我确实使用表单尝试过并且得到了同样的错误。
网址.py
path('/api/post_form/', post_form_api, name="post_form_api"),
javascript.js
/* get the csrftoken token */
function getCookie(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 this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie('csrftoken');
/* checkbox */
$("task_complete").click(function(){
var csrfToken = $("input[name='csrfmiddlewaretoken']");
var form_field1 = 'test'
$.ajax({ url: "{% url 'post_form_api' %}",
type: "POST",
dataType: "json",
data: {'form_field1':form_field1, 'csrfmiddlewaretoken':csrfToken.val()},
cache: false,
success : function(json) {
if (json.result=== 'ok'){
console.log('It works 1');
}else{
console.log('Something wrong with response');
}},
error : function(xhr,errmsg,err) {
console.log(err);
console.log(errmsg);
//console.warn(xhr.responseText) if I uncomment this it prints a lot of html
},
}).done(function(data) {
console.log("It works 2");
if (data.result === true){
console.log("It works 3");
alert(data.message);
}
});
});
视图.py
def post_form_api(request):
print("--view executed--")
模板
{% csrf_token %}
{% if task.completed == True %}
<td><input id="task_{{ task.id }}" class="task_complete" type="checkbox" checked='checked'/></td>
{% else %}
<td><input id="task_{{ task.id }}" class="task_complete" type="checkbox"/></td>
{% endif %}
谢谢
解决方案
推荐阅读
- android-studio - 通知不会显示 android studio
- java - 未授予权限
- unity3d - 谁应该在被子弹击中时调用 RPC 函数
- docker - Docker compose 每次创建具有不同子网的网络
- javascript - 用来自 javascript 的值构建 html 的标准方法是什么?
- background - 导航栏品牌没有样式和导航栏没有背景颜色只是透明
- here-api - 这里映射了以色列的地理编码错误的邮政编码
- node.js - 如何让这个 Discord 机器人与 Node.js 一起运行?
- highcharts - 如何使用新数据点更新烛台 Highstock 图表
- vb6 - 虚假的“无法加载控制,未找到许可证”错误?