Intereting Posts
PHP Simple XML удаляет всех детей PHP – разница в месяцах DateTime, не учитывающая разницу в году Перенаправление на вход в систему, когда пользователь не вошел в систему, или пользователь пытается получить доступ к странице напрямую с URL-адреса, используя angularjs удалить escape-последовательности из строки в php Вставить массив в базу данных в одну строку Не удается получить attr id с jquery Ошибка MySql: 1364 Поле 'display_name' не имеет значения по умолчанию preg_match () или аналогичная функция для проверки валюты PayPal IPN симулятор получить ошибку? Поиск вложенных массивов PHP PHP – альтернативы runkit для перехвата вызовов методов Как написать getter / setter для доступа к многоуровневому массиву по ключевым словам? Переадресация Laravel 5.4 на пользовательский URL после входа в систему Использование PHP SoapClient с Java JAX-WS RI (Webservice) Есть ли какой-либо API, чтобы получить подробную информацию о железнодорожной службе США

Отправить FormData и String Data вместе через JQuery AJAX?

Как отправить файл и ввести данные строки с помощью FormData() ? Например, у меня есть много других скрытых входных данных, которые мне нужны для отправки на сервер,

HTML,

 <form action="image.php" method="post" enctype="multipart/form-data"> <input type="file" name="file[]" multiple="" /> <input type="hidden" name="page_id" value="<?php echo $page_id;?>"/> <input type="hidden" name="category_id" value="<?php echo $item_category->category_id;?>"/> <input type="hidden" name="method" value="upload"/> <input type="hidden" name="required[category_id]" value="Category ID"/> </form> 

С помощью этого кода ниже я могу только отправлять данные файла, но не скрытые входные данные.

JQuery,

 // HTML5 form data object. var fd = new FormData(); var file_data = object.get(0).files[i]; var other_data = $('form').serialize(); // page_id=&category_id=15&method=upload&required%5Bcategory_id%5D=Category+ID fd.append("file", file_data); $.ajax({ url: 'add.php', data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); 

server.php

 print_r($_FILES); print_r($_POST); 

результат,

 Array ( [file] => Array ( [name] => xxx.doc [type] => application/msword [tmp_name] => C:\wamp\tmp\php7C24.tmp [error] => 0 [size] => 11776 ) ) 

Я хотел бы получить это как мой результат, хотя,

 Array ( [file] => Array ( [name] => xxx.doc [type] => application/msword [tmp_name] => C:\wamp\tmp\php7C24.tmp [error] => 0 [size] => 11776 ) ) Array ( [page_id] => 1000 [category_id] => 12 [method] => upload ... ) 

Является ли это возможным?

Related of "Отправить FormData и String Data вместе через JQuery AJAX?"

  var fd = new FormData(); var file_data = $('input[type="file"]')[0].files; // for multiple files for(var i = 0;i<file_data.length;i++){ fd.append("file_"+i, file_data[i]); } var other_data = $('form').serializeArray(); $.each(other_data,function(key,input){ fd.append(input.name,input.value); }); $.ajax({ url: 'test.php', data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ console.log(data); } }); 

Добавлен цикл for и изменился .serialize() на .serializeArray() для ссылки на объект в .each() для добавления в FormData .

ну, как более простая альтернатива и короче, вы тоже можете это сделать!

 var fd = new FormData(); var file_data = object.get(0).files[i]; var other_data = $('form').serialize(); //page_id=&category_id=15&method=upload&required%5Bcategory_id%5D=Category+ID fd.append("file", file_data); $.ajax({ url: 'add.php?'+ other_data, //<== just add it to the end of url *** data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); - var fd = new FormData(); var file_data = object.get(0).files[i]; var other_data = $('form').serialize(); //page_id=&category_id=15&method=upload&required%5Bcategory_id%5D=Category+ID fd.append("file", file_data); $.ajax({ url: 'add.php?'+ other_data, //<== just add it to the end of url *** data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); 

Я всегда использую this.It отправить данные формы с помощью ajax

 $(document).on("submit", "form", function(event) { event.preventDefault(); var url=$(this).attr("action"); $.ajax({ url: url, type: 'POST', data: new FormData(this), processData: false, contentType: false, success: function (data, status) { } }); }); 

Я пытаюсь внести свой вклад в сотрудничество с моим другом. с этого форума.

 $('#upload').on('click', function() { var fd = new FormData(); var c=0; var file_data,arr; $('input[type="file"]').each(function(){ file_data = $('input[type="file"]')[c].files; // get multiple files from input file console.log(file_data); for(var i = 0;i<file_data.length;i++){ fd.append('arr[]', file_data[i]); // we can put more than 1 image file } c++; }); $.ajax({ url: 'test.php', data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ console.log(data); } }); }); 

этот мой html-файл

 <form name="form" id="form" method="post" enctype="multipart/form-data"> <input type="file" name="file[]"multiple> <input type="button" name="submit" value="upload" id="upload"> 

этот файл php-кода

 <?php $count = count($_FILES['arr']['name']); // arr from fd.append('arr[]') var_dump($count); echo $count; var_dump($_FILES['arr']); if ( $count == 0 ) { echo 'Error: ' . $_FILES['arr']['error'][0] . '<br>'; } else { $i = 0; for ($i = 0; $i < $count; $i++) { move_uploaded_file($_FILES['arr']['tmp_name'][$i], 'uploads/' . $_FILES['arr']['name'][$i]); } } ?> 

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

Вы можете попробовать следующее:

 var fd = new FormData(); var data = []; //<---------------declare array here var file_data = object.get(0).files[i]; var other_data = $('form').serialize(); data.push(file_data); //<----------------push the data here data.push(other_data); //<----------------and this data too fd.append("file", data); //<---------then append this data 

Насколько я понимаю, вы хотели бы отправить изображения и значения входов вместе. Этот код хорошо работает для меня, я надеюсь, что это поможет кому-то в будущем.

 <form id="my-form" method="post" enctype="multipart/form-data"> <input type="file" name="file[]" multiple="" /> <input type="hidden" name="page_id" value="<?php echo $page_id;?>"/> <input type="hidden" name="category_id" value="<?php echo $item_category->category_id;?>"/> <input type="hidden" name="method" value="upload"/> <input type="hidden" name="required[category_id]" value="Category ID"/> </form> 

 jQuery.ajax({ url: 'post.php', data: new FormData($('#my-form')[0]), cache: false, contentType: false, processData: false, type: 'POST', success: function(data){ console.log(data); }}); 

Взгляните на мой короткий код для многократной загрузки ajax с предварительным просмотром.

https://santanamic.github.io/ajax-multiple-upload/

Для ввода нескольких файлов: попробуйте этот код:

  <form name="form" id="form" method="post" enctype="multipart/form-data"> <input type="file" name="file[]"> <input type="file" name="file[]" > <input type="text" name="name" id="name"> <input type="text" name="name1" id="name1"> <input type="button" name="submit" value="upload" id="upload"> </form> $('#upload').on('click', function() { var fd = new FormData(); var c=0; var file_data; $('input[type="file"]').each(function(){ file_data = $('input[type="file"]')[c].files; // for multiple files for(var i = 0;i<file_data.length;i++){ fd.append("file_"+c, file_data[i]); } c++; }); var other_data = $('form').serializeArray(); $.each(other_data,function(key,input){ fd.append(input.name,input.value); }); $.ajax({ url: 'work.php', data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ console.log(data); } }); }); 

Просто возьмите форму в jQuery, выполните итерацию по элементам и добавьте их в данные формы, с правильным типом курса.