2016-04-23 5 views
-1

Ich habe eine Ajax-Anfrage und ich habe ein Problem damit.jQuery Ajax dumm Fehler

var addonUploadForm = $('#addonUploadForm'); 

var addonUploadFormMessages = $('#addonUploadForm-messages'); 

$(addonUploadForm).submit(function(e) { 
    e.preventDefault(); 

    //var formData = $(addonUploadForm).serialize(); 
    //var formData = new FormData($(this)[0]); 
    var formData = new FormData($('#addonUploadForm')[0]); 

    $.ajax({ 
     type: 'POST', 
     url: $(addonUploadForm).attr('action'), 
     data: formData, 
     xhr: function() { }, 
     cache: false, 
     contentType: false, 
     processData: false // marked line of error 
     success: function(response) { 
      $(addonUploadFormMessages).removeClass('error'); 
      $(addonUploadFormMessages).addClass('success'); 

      $(addonUploadFormMessages).html(response); 

      $('#addonTitle').val(''); 
      $('#addonDescription').val(''); 
      $('#addonFile').val(''); 
      grecaptcha.reset(); 
     }, 
     error: function(data) { 
      $(addonUploadFormMessages).removeClass('success'); 
      $(addonUploadFormMessages).addClass('error'); 
      grecaptcha.reset(); 

      if (data.responseText !== '') { 
       $(addonUploadFormMessages).html(data.responseText); 
      } else { 
       $(addonUploadFormMessages).html('<div class="alert alert-danger fade in out"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Error!</strong> An error occured and your message could not be sent.</div>'); 
      } 
     } 
    }); 
}); 

, dass mein Code ist und auf der markierten Linie gibt es eine fehlt, und dieser Code arbeitet auseinander fein von doesnt auf der Seite der Anforderung anzeigen und stattdessen nimmt mich nur auf die URL Ajax, aber wenn ich das setzen , tut es nichts, wenn ich die Form keine Fehler, nichts einreiche.

Dank Ryan

+1

ändern Sie fehlen ein Komma. Es gibt keine Möglichkeit das "funktioniert". – tadman

+0

es tut, wenn Sie nicht glauben, dass ich mich mit Dampf [hier] anmelden (https://toybox.rtm516.co.uk/ingame/?show=upload) – rtm516

Antwort

0

Ich reparierte es Ich hatte 2 Versionen von jQuery runnnning mit noconflict und sie wo zuvor 1.11 und 1.4 und 1.4 zuletzt geladen wurde. Also musste ich meinen Nein-Konflikt zu var jq1 = jQuery.noConflict(true); und dann meinen Ajax-Code zu

var addonUploadForm = $('#addonUploadForm'); 

var addonUploadFormMessages = $('#addonUploadForm-messages'); 

$(addonUploadForm).submit(function(e) { 
    e.preventDefault(); 

    var formData = new FormData($('#addonUploadForm')[0]); 

    jq1.ajax($(addonUploadForm).attr('action'), { 
     type: 'POST', 
     url: $(addonUploadForm).attr('action'), 
     data: formData, 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function(response) { 
      $(addonUploadFormMessages).removeClass('error'); 
      $(addonUploadFormMessages).addClass('success'); 

      $(addonUploadFormMessages).html(response); 

      $('#addonTitle').val(''); 
      $('#addonDescription').val(''); 
      $('#addonFile').val(''); 
      grecaptcha.reset(); 
     }, 
     error: function(data) { 
      $(addonUploadFormMessages).removeClass('success'); 
      $(addonUploadFormMessages).addClass('error'); 
      grecaptcha.reset(); 

      if (data.responseText !== '') { 
       $(addonUploadFormMessages).html(data.responseText); 
      } else { 
       $(addonUploadFormMessages).html('<div class="alert alert-danger fade in out"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Error!</strong> An error occured and your message could not be sent.</div>'); 
      } 
     } 
    }); 
}); 
1

Wahrscheinlich verursacht diese Zeile den Fehler:

xhr: function() { }, 

ohne xhr Objekt, das Sie nicht eine Ajax-Anfrage schicken. Also lassen Sie diese Zeile aus.

Auch Sie müssen die "," in Ihrer markierten Zeile einfügen. Ihre URL öffnet sich, wenn Sie das "," auslassen, wird die Funktion einen Fehler auslösen und Ihr e.preventDefault() wird nicht funktionieren.

Auch würde ich diese Zeilen auslassen:

contentType: false, 
processData: false 

Und Sie sollten wahrscheinlich den HTML-Inhalt in dieser Linie entkommen:

$(addonUploadFormMessages).html(data.responseText); 

Hoffnung, das hilft.

+0

jetzt bekomme ich nur "Uncaught TypeError: Illegal Invocation" in der Konsole any Ideen auch nur eine Anmerkung im Senden von Text und Dateien in der Anfrage – rtm516

+0

und nur das Entfernen der 'xhr: function() {},' und das Hinzufügen der ',' macht es überhaupt nichts senden – rtm516

+0

Was ist 'data.responseText'? – charlietfl