【问题标题】:Transfer form together with other data using one AJAX post. Django使用一个 AJAX 帖子将表单与其他数据一起传输。姜戈
【发布时间】:2018-07-29 01:31:26
【问题描述】:

非常简单的任务。有必要使用 AJAX POST 将表单中的数据与其他数据一起传输。问题是以后如何从表单中提取这些数据,因为它们代表一整行。

$(function() {
  $('#myform').submit(function(event) {
    event.preventDefault();

    var form=$('#myform').serialize();
    var data={};
    data['form']=form;
    data['csrfmiddlewaretoken']='{{ csrf_token }}';
    data['other_data']='other_data';

    $.ajax({
        type: 'POST',
        url: '/myajaxformview',
        dataType: 'json',
        data: data,
        success: function (data, textStatus) {
            $('#output2').html(JSON.stringify(data));
        },
        error: function(xhr, status, e) {
            alert(status, e);
        }
    });
  });
});

def myajaxformview(request):
    if request.method == 'POST':
        if request.is_ajax():
            data = request.POST
            print(data)
            #<QueryDict: {'form': ['csrfmiddlewaretoken=VtBJ03YJZsEocJ5sxl9RqATdu38QBPgu4yPAC64JlpjOzILlF1fOQj54TotABHx9&field1=1&field2=2'], 'csrfmiddlewaretoken': ['VtBJ03YJZsEocJ5sxl9RqATdu38QBPgu4yPAC64JlpjOzILlF1fOQj54TotABHx9'], 'other_data': ['other_data']}>
            form=data.get('form')
            #csrfmiddlewaretoken=VtBJ03YJZsEocJ5sxl9RqATdu38QBPgu4yPAC64JlpjOzILlF1fOQj54TotABHx9&field1=1&field2=2
            print(form)
            return HttpResponse(json.dumps(data))
    return render(request, 'foo.html')

【问题讨论】:

    标签: javascript jquery ajax django python-3.x


    【解决方案1】:

    考虑使用FormData:

    $(function() {
      $('#myform').submit(function(event) {
        event.preventDefault();
    
        var data = new FormData(event.target);
        data.append('form', event.target);
        data.append('csrfmiddlewaretoken', '{{ csrf_token }}');
        data.append('other_data', 'other_data');
    
        $.ajax({
            type: 'POST',
            url: '/myajaxformview',
            dataType: 'json',
            data: data,
            processData: false,
            contentType: false,
            success: function (data, textStatus) {
               $('#output2').html(JSON.stringify(data));
            },
            error: function(xhr, status, e) {
              alert(status, e);
            }
        });
      });
     });
    

    【讨论】:

    • 哇!这是魔术!我是初学者,为这个任务苦了好几天,你这么快就给了我决定,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 2020-08-17
    • 2013-12-03
    • 2019-07-12
    • 1970-01-01
    • 2015-08-30
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多