douchuang4181
2017-11-07 11:53
浏览 41

当POST返回NULL时,Var_dump表单数据

I saw some simple code for using formdata for uploading images over ajax but on php side it is showing up NULL inside $_POST, I tried to echo $_POST['file']['name'] but it echos nothing...

My php file has:

var_dump($_POST);

How can I use formData sent by ajax to php (in php)?

$(document).on('change','#image',function(){
    var fd = new FormData();    
        fd.append( 'file', $(this).prop("files")[0]);
       console.log(fd);
    $.ajax({
        type: 'post',
        processData: false,
        contentType: false,
        url: './images.php',
        data: fd,
        success: function(a){
            console.log(a);
        }
    });
 });
#image{display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<label for="image"><i class="fa fa-camera" aria-hidden="true"></i></label><input  type="file" name="file" id="image">

</div>
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • drymoeuka282427675 2017-11-07 11:58
    已采纳

    You have to use the superglobal $_FILES instead of $_POST try:

    var_dump($_FILES);
    

    Output something like:

     array (size=1)  'file' =>
          array (size=5)
                'name' => string '49e9c80947764261bbd9d46a8063c3d1.jpg' (length=36)      
                'type' => string 'image/jpeg' (length=10)
                'tmp_name' => string 'C:\xampp\tmp\php64A9.tmp' (length=24)      
                'error' => int 0
                'size' => int 3090
    
    已采纳该答案
    打赏 评论
  • du7999 2017-11-07 12:14

    This worked for me.

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <form id="imageUpload">
        <label for="image"><i class="fa fa-camera" aria-hidden="true"></i></label><input  type="file" name="file" id="image">
    </form>
    <script type="text/javascript">
        $(document).on('change','#image',function(){
    
        var fd = new FormData($("#imageUpload")[0]);
            fd.append('file',$(this)[0].files[0]);
    
           console.log(fd);
        $.ajax({
            type: 'post',
            processData: false,
            contentType: false,
            url: 'testimage.php',//change to yours
            data: fd,
            success: function(a){
                console.log(a);
            }
        });
        });
    
    </script>
    

    Then my php

    <?php
    
        var_dump($_FILES);
    

    Results :

    enter image description here

    打赏 评论

相关推荐 更多相似问题