2016-04-23 130 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