使用 ajax 将数据发布到 Django 时获取空值
getting null value when posting data to django using ajax
我正在尝试 post 从输入到我的 django 视图的数据来对这个数据做一些处理,这是一个文本,我正在使用 AJAX 但我得到的输入是 NULL查看
$(document).on('submit', '#post-form',function(e){
$.ajax({
type:'POST',
url:'{% url "index" %}',
data:{
inp:$('#qst').val()
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
action: 'post'
},
dataType: 'json',
success:function(json){
document.getElementById("post-form").reset();
$(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>')
$(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>')
},
error : function(xhr,errmsg,err) {
console.log(xhr.status + ":" + xhr.responseText); // provide a bit more info about the error to the console
}
});
});
这是我的观点
from .predict_model import respond
def chat(request):
context={}
inp=""
response_data = {}
if request.method == 'POST' and request.is_ajax:
inp = request.POST.get('inp')
answer=respond(inp)
response_data['answer'] = answer
response_data['inp'] = inp
return JsonResponse(response_data)
return render(request, 'templates/rhchatbot/index.html',context )
但是当我打印 inp 值时,我得到:{'inp':null}
这是获取输入的表单:
<form class="chatbox__footer" method="POST" id='post-form' >{% csrf_token %}
<img src="{% static 'images/icons/emojis.svg' %}" alt="" class="icon">
<img src="{% static 'images/icons/microphone.svg' %}" alt="" class="icon">
<input id='qst' type="text" placeholder="Write a message..." >
<button class="send-btn" alt="send-btn" type='submit'>
<img src="{% static 'images/send.png'%}">
</button>
<img src="{% static 'images/icons/attachment.svg' %}" alt="" class="icon">
</form>
</div>
首先你必须添加 name
属性到输入字段:
<input id='qst' type="text" placeholder="Write a message..." name="inp">
那么您可以尝试以下方法:
$("#post-form").submit(function (e) {
e.preventDefault();
var serializedData = $(this).serialize();
$.ajax({
type: 'POST',
url: "{% url 'index' %}",
data: serializedData,
success: function (json) {
document.getElementById("post-form").reset();
$(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>')
$(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>')
},
error: function (xhr,errmsg,err) {
console.log(xhr.status + ":" + xhr.responseText);
}
})
})
我正在尝试 post 从输入到我的 django 视图的数据来对这个数据做一些处理,这是一个文本,我正在使用 AJAX 但我得到的输入是 NULL查看
$(document).on('submit', '#post-form',function(e){
$.ajax({
type:'POST',
url:'{% url "index" %}',
data:{
inp:$('#qst').val()
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
action: 'post'
},
dataType: 'json',
success:function(json){
document.getElementById("post-form").reset();
$(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>')
$(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>')
},
error : function(xhr,errmsg,err) {
console.log(xhr.status + ":" + xhr.responseText); // provide a bit more info about the error to the console
}
});
});
这是我的观点
from .predict_model import respond
def chat(request):
context={}
inp=""
response_data = {}
if request.method == 'POST' and request.is_ajax:
inp = request.POST.get('inp')
answer=respond(inp)
response_data['answer'] = answer
response_data['inp'] = inp
return JsonResponse(response_data)
return render(request, 'templates/rhchatbot/index.html',context )
但是当我打印 inp 值时,我得到:{'inp':null}
这是获取输入的表单:
<form class="chatbox__footer" method="POST" id='post-form' >{% csrf_token %}
<img src="{% static 'images/icons/emojis.svg' %}" alt="" class="icon">
<img src="{% static 'images/icons/microphone.svg' %}" alt="" class="icon">
<input id='qst' type="text" placeholder="Write a message..." >
<button class="send-btn" alt="send-btn" type='submit'>
<img src="{% static 'images/send.png'%}">
</button>
<img src="{% static 'images/icons/attachment.svg' %}" alt="" class="icon">
</form>
</div>
首先你必须添加 name
属性到输入字段:
<input id='qst' type="text" placeholder="Write a message..." name="inp">
那么您可以尝试以下方法:
$("#post-form").submit(function (e) {
e.preventDefault();
var serializedData = $(this).serialize();
$.ajax({
type: 'POST',
url: "{% url 'index' %}",
data: serializedData,
success: function (json) {
document.getElementById("post-form").reset();
$(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>')
$(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>')
},
error: function (xhr,errmsg,err) {
console.log(xhr.status + ":" + xhr.responseText);
}
})
})