【问题标题】:getting null value when posting data to django using ajax使用ajax将数据发布到django时获取空值
【发布时间】: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' %}" 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>

 
   

【问题讨论】:

    标签: javascript python django ajax post


    【解决方案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 作为发布的值。我不知道问题出在哪里
    • 可以分享一下表格吗?
    • 完成,你可以检查一下
    • 非常感谢你的兄弟,它工作得很好,我很感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    相关资源
    最近更新 更多