Я пытаюсь написать скрипт с 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, но я не могу понять, почему это отличается - и почему это не работает ...
Спасибо