2016-04-23 131 views
-1

我一直在編碼一個ajax請求,我有一個問題。jQuery ajax愚蠢的錯誤

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>'); 
      } 
     } 
    }); 
}); 

這是我的代碼和標記線是有缺失的,而這個代碼工作的犯規除了細膩的顯示頁面上的要求和它,而不是隻是帶我到一個AJAX網址,但如果我把在我提交表單時沒有任何錯誤,沒有任何內容。

感謝瑞安

+1

您錯過了逗號。這個「工作」是沒有辦法的。 – tadman

+0

它確實如果你不相信我登錄使用蒸汽[這裏](https://toybox.rtm516.co.uk/ingame/?show=upload) – rtm516

回答

0

我修正了它,我有2個版本的jQuery與noconflict運行,他們在1.11和1.4和1.4之前最後加載。所以我不得不改變我的衝突var jq1 = jQuery.noConflict(true);,然後我的阿賈克斯代碼

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

也許這行導致錯誤:

xhr: function() { }, 

沒有一個XHR對象,你不能發送一個Ajax請求。 因此,請忽略此行。

此外,您還需要將「,」放在標記的行中。 您的網址會打開,因爲如果您省略「,」該函數將拋出一個錯誤,並且您的e.preventDefault()將不起作用。

另外我想離開了這幾行:

contentType: false, 
processData: false 

而且你應該逃脫該行的HTML內容:

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

希望這有助於。

+0

現在我只是在控制檯中得到「Uncaught TypeError:Illegal invocation」想法也只是一個筆記即時通訊發送請求中的文本和文件 – rtm516

+0

,只是刪除'xhr:function(){},'並添加','使它根本不發送任何東西 – rtm516

+0

什麼是'data.responseText'? – charlietfl