【问题标题】:TypeError: 'append' called on an object that does not implement interface FormData with processData and contentType false bothTypeError:在未实现接口 FormData 的对象上调用了“附加”,其中 processData 和 contentType 均为 false
【发布时间】:2016-09-18 16:25:22
【问题描述】:

首先,请原谅我的英语。我正在尝试使用 ajax 提交表单,我的 js 代码是下一个:

$("#formPublicidad").on('submit', function(event) {
    event.preventDefault();
    var dataForm = new FormData(document.getElementById('formPublicidad'));

    if(dataForm.get('url') == '' || dataForm.get('texto') == '' || dataForm.get('imagen') == '') {
        $("#formMsg").text('Debe rellenar todos los campos');
        $("#formMsg").css('display', 'block');
    }else {
        $("#formMsg").text('Cargando...');
        $(".btn-form-pub").attr('disabled', true);
        $.ajax({
            url: 'publicidad.ajax.php', 
            method: 'POST',
            data: dataForm,
            pocessData: false,
            contentType: false,
            cache: false,
            dataType: 'json',
            success: function(response) {
                var msg = JSON.stringify(response.msg).replace(/\"/g, "");
                $(".btn-form-pub").attr('disabled', false);
                if(msg != 'success') {
                    document.getElementById('formMsg').textContent = msg;
                    document.getElementById('formMsg').style = 'display: block;';
                }else {
                    $("#formModal").modal('hide');
                }
            }
        });
    }
});

这是我的 HTML 代码:

<form method="post" id="formPublicidad">
    <div class="modal-body">
        <span id="formMsg"></span>
        <input type="hidden" name="posicion" id="pubPos">
        <label for="publiUrl">URL</label>
        <input type="text" name="url" id="publiUrl" placeholder="Ej.: www.google.com.uy" class="form-control">
        <label for="publiText">Texto</label>
        <input type="text" name="texto" id="publiText" placeholder="Ej.: Google" class="form-control">
        <label for="publiImg">Imagen</label>
        <input type="file" name="imagen" id="publiImagen">
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-default btn-form-pub" data-dismiss="modal">Cancelar</button>
        <button type="submit" class="btn btn-primary btn-form-pub" id="btn-add-pub">Guardar cambios</button>
    </div>
</form>

当我尝试在控制台中通过 ajax 提交时,出现下一个错误:

TypeError:在未实现 FormData 接口的对象上调用了“append”。

我已经做过很多次了,但现在不行了。 请问有人可以帮忙吗?非常感谢!!

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

您在原始 Ajax 调用中拼错了 processData(如 pocessData)。这可能就是当您从其他来源复制粘贴而不进行任何实质性更改时它开始工作的原因。

【讨论】:

    【解决方案2】:

    我真的解决了这个问题,我从另一个类似的实现中复制并粘贴代码并将FormData的name变量更改为data

    $.ajax({
            url: 'publicidad.ajax.php',
            type: 'POST',
            data: data,
            contentType: false,
            processData: false, 
            cache: false,
            dataType: 'json',                  
            success: function(data) { 
                // response
            }
    });
    

    【讨论】:

    • 我真的看不出区别...??
    • 我使用了设置POST的方法而不是输入...对不起!!
    猜你喜欢
    • 2017-08-12
    • 2014-03-24
    • 2014-10-12
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2014-05-22
    相关资源
    最近更新 更多