2016-04-23 3 views
-1

Я кодировал запрос ajax, и у меня есть проблема с ним.jQuery ajax stupid error

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

Это мой код и на отмеченной линии есть отсутствует, и этот код работает отлично, кроме оленья кожа отображения запроса на странице и вместо этого он просто берет меня к АЯКСУ URL, но если я поставил , в этом ничего не делает, когда я представляю форму без ошибок, ничего.

Благодаря Райан

+1

Вам не хватает запятой. Нет никакого способа, чтобы это «работало». – tadman

+0

он делает, если вы не верите, что я подпишусь с использованием пара [здесь] (https://toybox.rtm516.co.uk/ingame/?show=upload) – rtm516

ответ

0

Я исправил его, у меня было 2 версии jquery runnning с noconflict, и они, где 1.11 и 1.4, и 1.4 были загружены до этого. Так что я должен был изменить свой конфликт без var jq1 = jQuery.noConflict(true);, а затем мой код ajax до

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. Так что оставьте эту строку.

Также вам нужно поместить символ «,» в вашу выделенную строку. Ваш url открывается, потому что если вы не укажете «,», функция выдает ошибку, и ваш e.preventDefault() не будет работать.

Также я хотел бы оставить эти строки:

contentType: false, 
processData: false 

И вы должны, вероятно, спасаясь от содержимого HTML в этой строке:

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

Надеется, что это помогает.

+0

теперь им просто получаю «Uncaught TypeError: Illegal invocation» в консоли any идеи также просто записку, отправляющую текст и файлы в запросе – rtm516

+0

и просто удаляя 'xhr: function() {},' и добавляя ',' заставляет ничего не отправлять – rtm516

+0

что такое 'data.responseText'? – charlietfl