使用ajax将数据发布到django时获取空值
Posted
技术标签:
【中文标题】使用ajax将数据发布到django时获取空值【英文标题】:getting null value when posting data to django using ajax 【发布时间】:2021-11-08 01:39:34 【问题描述】:我尝试将输入中的数据发布到我的 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' %" class="icon">
<img src="% static 'images/icons/microphone.svg' %" class="icon">
<input id='qst' type="text" placeholder="Write a message..." >
<button class="send-btn" type='submit'>
<img src="% static 'images/send.png'%">
</button>
<img src="% static 'images/icons/attachment.svg' %" class="icon">
</form>
</div>
【问题讨论】:
【参考方案1】:首先您必须在输入字段中添加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);
)
)
【讨论】:
谢谢,但仍然无法使用。这次我得到 NONE 作为发布的值。我不知道问题出在哪里 可以分享一下表格吗? 完成,你可以检查一下 非常感谢你的兄弟,它工作得很好,我很感激以上是关于使用ajax将数据发布到django时获取空值的主要内容,如果未能解决你的问题,请参考以下文章
使用django时如何在ajax调用中传递request.user?