2016-05-21 6 views
0

最初にすべてが私の英語です。私は私のjsのコードは次で、Ajaxでフォームを送信しようとしている:TypeError:processDataとcontentTypeがfalseのFormDataを実装していないオブジェクトで 'append'が呼び出されました。両方とも

$("#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: 'append' called on an object that does not implement interface FormData.

私はこれをもう一度熟考しましたが、今は動作しません。 誰かが助けることができますか?大いに感謝する!!

+1

['append'は、FormDataインターフェイスを実装していないオブジェクトで呼び出される可能性があります](http://stackoverflow.com/questions/25390598/append-called-on-an-object-that-does-not- implement-interface-formdata) –

+0

問題を解決できないことがあります。しかし、代わりに[必須](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-required)属性を使用することをお勧めしますか? – Endless

+0

必要な属性に感謝します! Evan yはこれらの可能な重複を見ましたが、私はcontentTypeとprocessDataをfalseに設定しました... – TheBee

答えて

0

私は本当に問題を解決し、私はコピーして別の同様の実装からコードを貼り付け、あなたは(pocessDataなど)、オリジナルのAjax呼び出しでprocessDataをスペルミスデータ

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

私は本当にdiferenceをメモできません... ?? – TheBee

+0

代わりにPOSTを設定するメソッドを使用しました...申し訳ありません! – TheBee

0

にいるFormDataの名前の変数を変更します。これは、大きな変更を加えずに別のソースからコピー&ペーストしたときに機能し始めた理由です。

関連する問題