Попытка отправки формы через метод jQuery.post и получение «Uncaught TypeError: Object # <FormData> не имеет метода 'serialize”

0

Я пытаюсь вызвать метод загрузки, который собирается отправить форму, используя метод jQuery post, но при попытке выполнить следующую ошибку.

Uncaught TypeError: Object # не имеет сериализации метода

Код:

     function upload() {
        var dfg = new FormData(jQuery('form')[0]);
        alert(dfg);
        jQuery
    .post(
            'uplAttachment',
            {
                dfg: dfg.serialize()
            },
            function (data) {
                var la = data;
                if (la == null | la == '') {
                    alert("success");
                }
                else {
                    alert("failed");
                }
            });
    }

Страница jsp:

<body>
    <div style="text-align: center; margin-top: 60px;">
        <form enctype="multipart/form-data">
            Select file:
            <input type="file" name="dataFile" id="fileAttachment"/><br/><br/>
                <div style="text-align: center; margin-top: 100px;">
                    <input style="cursor: pointer;" onmouseover="" onclick="upload()" class="dialogbox" type="submit" value="Upload Report" />
                </div>
        </form>
    </div>
</body>
  • 0
    $(dfg).serialize() создает оболочку jQuery.
  • 0
    на какой линии?
Показать ещё 1 комментарий
Теги:
multipartform-data
form-data

2 ответа

0

Здесь вы создаете объект FormData, такой как "dfg".

var dfg=new FormData(jQuery('form')[0]);

не существует метода serialize(), определенного в FormData, поэтому вы должны отказаться от abject, хотя ajax.

ИЛИ

    function upload()
    {
        var dfg = new FormData(jQuery('form')[0]);
        $.ajax({
            url: 'uplAttachment',
            data: dfg,
            processData: false,
            contentType: false,
            type: 'POST',
            success: function(data){
                alert(data);
            }
        });
    }
  • 0
    Вы хотели сказать, нет необходимости использовать метод сериализации, я должен передать переменную dfg?
  • 0
    да, вы можете передать это в ajax.
Показать ещё 3 комментария
0

вместо этого:

function upload() {
var dfg = new FormData(jQuery('form')[0]);

измените на это:

передать текущий контекст элемента при нажатии на вход:

onclick="upload(this)"

затем обновите свою функцию следующим образом:

function upload(el) {
var dfg = jQuery(el).closest('form');

Таким образом, ваш окончательный код должен выглядеть следующим образом:

HTML:

<input style="cursor: pointer;" onmouseover="" onclick="upload(this)" 
       class="dialogbox" type="submit" value="Upload Report" />

JQuery:

function upload(el) {
   var dfg = jQuery(el).closest('form');
   alert(dfg);
   jQuery.post('uplAttachment', {
      dfg: dfg.serialize()
   }, function (data) {
      var la = data;
      if (la == null | la == '') {
          alert("success");
      } else {
          alert("failed");
      }
   });
}
  • 0
    попробовал ваше решение и получил следующую ошибку на консоли браузера 500 (Внутренняя ошибка сервера) jquery-1.8.3.js: 8435 jQuery.ajaxTransport.send jquery-1.8.3.js: 8435 jQuery.extend.ajax jquery-1.8.3. js: 7987 jQuery.each.jQuery. (анонимная функция) jquery-1.8.3.js: 7511 uplAttachment

Ещё вопросы

Сообщество Overcoder
Наверх
Меню