javascript - 使用ajax将数据发布到django时获取空值

标签 javascript python django ajax post

我正在尝试将输入中的数据发布到我的 django View 中,以对该数据进行一些处理,这是一个文本,并且正在使用 AJAX,但我在我的 View 中得到了输入 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);
         }
     })
})

关于javascript - 使用ajax将数据发布到django时获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69151209/

相关文章:

javascript - 使用 Id 修改页面

javascript - 选择特定表格行时禁用按钮

python - 将两个 numpy.arrays 之间的比较仅应用于一列但检索整行

python - 检查我的脚本是否启动且未卡住的可靠方法是什么?

python - 不太确定在 python 中使用 "or"时发生了什么

python - 查询时在 Django TimeStampedModel 中指定时间间隔

python - 如何在自定义管理列表显示中显示 Django 身份验证用户字段

javascript - 在 backbone.js 中,模型知道它的 View 是错误的吗?

javascript - d3 : svg image in zoom circle packing bis

python - 如何在 App Engine 上使用 Django 接收百分比编码的斜杠?