【发布时间】:2018-04-22 19:56:59
【问题描述】:
我正在使用 Django 学习 ajax。这是我的代码,但它在我的控制台中记录 SyntaxError: Unexpected token 。我尝试编辑 csrf_token 部分,但没有任何好处。我的代码中可能出现的故障是什么?
index.html
...
<form class="form-inline" action="translate/" method="post">
{% csrf_token %}
{{ form }}
<div class="form-group">
<input type="textarea" class="form-control email" id="email" placeholder="Enter text" name="string" autofocus="">
</div>
<button type="submit" class="btn btn-success pull-right">Convert</button>
</form>
...
<script>
var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
$("#email").keyup(function () {
var value = $(this).val();
$.ajax({
type:"POST",
url: '/translate/',
data: {
"value": value,
},
dataType: 'json',
success: function (data) {
alert(":)");
console.log(data);
{#$("#googletrans").html(data.googletrans);#}
},
error: function(xhr, status, error) {
alert(error);
console.log(error);
}
});
});
</script>
views.py
@csrf_exempt
def convert(request):
value = request.GET.get('value', None)
data = {
"googletrans": "prateek"
}
return JsonResponse(data)
urls.py
urlpatterns = [
url('', views.home, name='home'),
url(r'^translate/$', views.convert, name='convert'),
]
【问题讨论】:
-
我通常会发现意外的
-
谢谢。你能告诉我为什么我的代码会返回 HTML 响应吗?
-
为什么你在 ajax 中发送
POST请求却试图从request.GET获取value? -
错误函数中
xhr对象中的responseText是什么?您可以尝试使用 postman 或其他 restclient 发送 POST 请求,并查看服务器实际返回的内容。