JQuery的:后FORMDATA和CSRF令牌在一起令牌、JQuery、FORMDATA、CSRF

2023-09-10 13:36:22 作者:恰好路过人间

数据:..下面正确行?我要发布表单数据和CSRF令牌Django视图功能。

  $('#文件上传')。在('改变',函数(){
    VAR currentpath = window.location.pathname;
    VAR FORMDATA =新FORMDATA($('表')[0]);
    $阿贾克斯({
            网址:currentpath,//服务器脚本来处理数据
            键入:POST,
            数据:{FORMDATA,csrfmiddlewaretoken:{{csrf_token}}},
            缓存:假的,
            的contentType:假的,
            过程数据:假的
        });
});
 

解决方案 exe4j jre一起打包 JDK11及以后版本在Win下的打包发布方法

您已经为您的参数添加到FORMDATA对象(使用的追加)和往常一样独自传递FORMDATA对象作为data属性。

  $('#id_image')。在('改变',函数(){
    VAR currentpath = window.location.pathname;
    VAR FORMDATA =新FORMDATA($('表')[0]);
    formData.append('csrfmiddlewaretoken,{{csrf_token}}');
    $阿贾克斯({
            网址:currentpath,//服务器脚本来处理数据
            键入:POST,
            数据:FORMDATA,
            缓存:假的,
            的contentType:假的,
            过程数据:假的
        });
});
 

Is the data:.. line below correct? I want to post the form data AND csrf token to a Django view function.

$('#file-upload').on('change', function () {
    var currentpath = window.location.pathname;
    var formData = new FormData($('form')[0]);
    $.ajax({
            url: currentpath,  //server script to process data
            type: 'POST',
            data: {formData, 'csrfmiddlewaretoken': '{{ csrf_token }}'},
            cache: false,
            contentType: false,
            processData: false
        });
});

解决方案

You have to add your parameters to the FormData object (using append) and as always pass the formdata object alone as the data property.

$('#id_image').on('change', function () {
    var currentpath = window.location.pathname;
    var formData = new FormData($('form')[0]);
    formData.append('csrfmiddlewaretoken', '{{ csrf_token }}');
    $.ajax({
            url: currentpath,  //server script to process data
            type: 'POST',
            data: formData,
            cache: false,
            contentType: false,
            processData: false
        });
});