Загрузить данные и jQuery - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь написать скрипт с jQuery, который может l oop через все поля ввода и добавить его к объекту formData.

Я делал то же самое раньше в 'normal' JS и это прекрасно работает - но я не понимаю, почему это не работает с jQuery вместо ...

Он вообще ничего не добавляет к объекту formData ...

Вот мой старый JS пример:

<input type="file" name="upload_file" onchange="post_form('target_url.asp');">
<script type="application/javascript">
function post_form(target_url) {
  var inp = document.getElementsByTagName("input");
  var i_a;
  var fil_x;
  var str_val = new FormData();
  for (i_a = 0; i_a < inp.length; i_a++) {
    if (inp[i_a].type == "file") {
      for (fil_x = 0; fil_x < inp[i_a].files.length; fil_x++) {
        str_val.append("file", inp[i_a].files[fil_x], inp[i_a].files[fil_x].name);
      }
    }
  }
  pgf = new XMLHttpRequest();
  pgf.open("POST", target_url, true);
  pgf.send(str_val);
}
</script>

А вот мой новый скрипт, который должен делать то же самое, но вместо jQuery ... Но он не работает - ничего не происходит отправить на сервер ... Я не думаю, что он на самом деле добавляет его к formData ...

<input type="file" name="upload_file" onchange="post_form('target_url.asp');">
<script type="application/javascript">
function post_form(target_url) {
  var r_data = new FormData();
  $(document).find("input, select, textarea").each(function() {
    if ($(this).attr("type") !== "checkbox" && $(this).attr("type") !== "radio") {
      if ($(this).attr("name") != undefined) {
        r_data.append($(this).attr("name"), $(this).val());
      }
    } else {
      if ($(this).is(":checked")) {
        if ($(this).attr("name") != undefined) {
          r_data.append($(this).attr("name"), $(this).val());
        }
      }
    }
  });
  $.ajax({
    type: "POST",
    url: target_url,
    data: r_data,
    processData: false,
    cache: false,
    contentType: false,
  });
}
</script>
<script type="text/javascript" src="jquery.min.js"></script>

Я искал и пробовал много разных примеров с jQuery, но я не могу понять, почему это отличается - и почему это не работает ...

Спасибо

...