장장이이
10
2020-09-08 12:36:49 작성 2020-09-08 12:37:31 수정됨
3
107

jquery ajax 통해 php로 formdata 보내기


안녕하세요!

html에서 image file을 제출하면 jquery ajax를 통해 php로 보내려합니다.

js파일에서 html의 form을 가져오는 것까지는 가능하지만 php로 넘기면 비어있는 array가 출력됩니다.

어떻게 해야할까요? 도움 주시면 감사하겠습니다.!!

<?php

var_dump($_POST); // array(0) { }     가 출력됩니다

?>


$(document).ready(function (e) {
  $("#imageForm").on("submit", function (e) {
    e.preventDefault();
    var form = $("#imageForm")[0];
    var formData = new FormData(form);

    console.log(formData.get("file")); // 다음과 같은 결과가 나옵니다. 
//File {name: "everytime.png", lastModified: 1599031618299, lastModifiedDate: Wed Sep 02 2020 16:26:58 GMT+0900 (대한민국 표준시), webkitRelativePath: "", size: 72847, …}//

    $.ajax({
      url: "imageupload.php",
      type: "POST",
      data: formData,
      dataType: "json",
      contentType: false,
      processData: false,
      cache: false,
      success: function (data) {
        $(".image_show").html(data);
      },
    });
  });
});


<body>
    <form id="imageForm" enctype="multipart/form-data" method="POST">
      <input type="file" class="form-contorl" name="file" id="file" /><br />
      <input type="submit" name="submit" value="Upload" id="btnSubmit></input>
    </form>
    <div class="image_show"></div>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="image.js"></script>
  </body>


0
  • 답변 3

  • web.
    684
    2020-09-08 12:50:18 작성 2020-09-08 12:52:34 수정됨

    넘기는 파라미터가 file이라서 그런거 아닐까요 


    echo $_FILES;   로 한번 찍어보세요. 


    또는 var_dump($_FILES);


  • 장장이이
    10
    2020-09-08 13:01:14
    같은 결과가 나옵니다 ㅜㅜ 왜 empty array 일까요
  • web.
    684
    2020-09-08 13:49:30 작성 2020-09-08 13:50:51 수정됨

    $_FILES['file'

    중간에 name을 안넣어줬군요. 

    다시한번 찍어보세요 ㅋㅋㅋㅋ.


    아니면 input text로 다른 데이터 몇개 더 넘겨보세요


    제 추측이 맞다면 form에서 멀티파트 폼데이터로 넘길때

    넘기는 데이터가 input tpye="file" 하나인데

    file은 넘겨도 $_POST로 안보이거든요. 

    다른 텍스트 몇개 더넘기면 그 텍스트는 보일거에요.


    file은 받을때 $_FILES[input네임명] 으로 받는거라고 구글에서 나오긴하는데..

    form에서 넘긴 file 받는법 구글에 한번 쳐보시구 찍어보세욥

  • 로그인을 하시면 답변 을 등록할 수 있습니다.