[JQUERY] jQuery Ajax를 통해 FormData 및 String 데이터를 함께 보내십시오.
JQUERYjQuery Ajax를 통해 FormData 및 String 데이터를 함께 보내십시오.
해결법
-
1.
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 루프를 추가하고 변경합니다 .eech ()의 객체 참조에 대한 .serialize () ~ .eeach ()에 formData에 추가합니다.
-
2.대안이 더 짧고 짧아 지면서도 이것을 할 수 있습니다 !!
대안이 더 짧고 짧아 지면서도 이것을 할 수 있습니다 !!
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); } });
-
3.항상 사용합니다. Ajax를 사용하여 양식 데이터를 보내십시오
항상 사용합니다. 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) { } }); });
-
4.나는 친구들과 나의 코드 공동 작업을 기부하려고 노력합니다. 이 포럼에서 수정하십시오.
나는 친구들과 나의 코드 공동 작업을 기부하려고 노력합니다. 이 포럼에서 수정하십시오.
$('#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]); } } ?>
나는 같은 문제를 가진 사람들을 희망하고,이 문제를 빨리 해결할 수 있습니다. 여러 업로드 이미지 때문에 두통이 있습니다.
-
5.내가 이해하는 것에서 당신은 이미지의 이미지와 입력 값을 함께 보내고 싶습니다. 이 코드는 나에게 잘 작동합니다. 나는 그것이 미래에 누군가를 돕기를 바랍니다.
내가 이해하는 것에서 당신은 이미지의 이미지와 입력 값을 함께 보내고 싶습니다. 이 코드는 나에게 잘 작동합니다. 나는 그것이 미래에 누군가를 돕기를 바랍니다.
<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/
-
6.당신은 이것을 시도 할 수 있습니다 :
당신은 이것을 시도 할 수 있습니다 :
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
-
7.
var fd = new FormData(); //Get Form Values var other_data = $('#form1').serializeArray(); $.each(other_data, function (key, input) { fd.append(input.name, input.value); }); //Get File Value var $file = jq("#photoUpload").get(0); if ($file.files.length > 0) { for (var i = 0; i < $file.files.length; i++) { fd.append('Photograph' + i, $file.files[i]); } } $.ajax({ url: 'test.php', data: fd, contentType: false, processData: false, type: 'POST', success: function(data){ console.log(data); } });
-
8.여러 파일 입력의 경우 : 이 코드를 사용해보십시오.
여러 파일 입력의 경우 : 이 코드를 사용해보십시오.
<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); } }); });
-
9.어떻게 든 (모델 번호가 서버에서 잘못된 것 같으면) 및 페이지 게시물이 서버에 다시 서버로 다시 사용해 왔습니다. 그래서 그 솔루션을 찾았습니다.
어떻게 든 (모델 번호가 서버에서 잘못된 것 같으면) 및 페이지 게시물이 서버에 다시 서버로 다시 사용해 왔습니다. 그래서 그 솔루션을 찾았습니다.
var data = new FormData(); $.each($form.serializeArray(), function (key, input) { if (data.has(input.name)) { data.set(input.name, input.value); } else { data.append(input.name, input.value); } });
-
10.Ajax의 여러 파일은이 작업을 수행합니다
Ajax의 여러 파일은이 작업을 수행합니다
var url = "your_url"; var data = $('#form').serialize(); var form_data = new FormData(); //get the length of file inputs var length = $('input[type="file"]').length; for(var i = 0;i<length;i++){ file_data = $('input[type="file"]')[i].files; form_data.append("file_"+i, file_data[0]); } // for other data form_data.append("data",data); $.ajax({ url: url, type: "POST", data: form_data, cache: false, contentType: false, //important processData: false, //important success: function (data) { //do something } })
PHP.
parse_str($_POST['data'], $_POST); for($i=0;$i<count($_FILES);$i++){ if(isset($_FILES['file_'.$i])){ $file = $_FILES['file_'.$i]; $file_name = $file['name']; $file_type = $file ['type']; $file_size = $file ['size']; $file_path = $file ['tmp_name']; } }
from https://stackoverflow.com/questions/21060247/send-formdata-and-string-data-together-through-jquery-ajax by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] jQuery로 HTML 문자열을 파싱하십시오 (0) | 2020.10.31 |
---|---|
[JQUERY] 제출하기 전에 양식에 추가 필드를 추가하는 방법은 무엇입니까? (0) | 2020.10.31 |
[JQUERY] .success ()와 .complete ()의 차이점? (0) | 2020.10.31 |
[JQUERY] jQuery $ ( "# RadioButton"). 변경 중에 발사되지 않음 (...) (0) | 2020.10.31 |
[JQUERY] HTML - 변경 \ 업데이트 페이지 내용을 새로 고침하지 않고 페이지 다시로드하지 않고 (0) | 2020.10.31 |