복붙노트

[JQUERY] jQuery Ajax를 통해 FormData 및 String 데이터를 함께 보내십시오.

JQUERY

jQuery Ajax를 통해 FormData 및 String 데이터를 함께 보내십시오.

해결법


  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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'];
                  }
            }
    
  11. from https://stackoverflow.com/questions/21060247/send-formdata-and-string-data-together-through-jquery-ajax by cc-by-sa and MIT license