Isset不适用于ajax调用

时间:2015-12-25 11:12:15

标签: javascript php jquery ajax file-upload

我正在创建一个简单的页面,用户可以在不刷新整个页面的情况下上传图像。但if(isset($_post[oneimgtxt]))无效.. 这是我上传图像的serverSide代码:

<?php
$maxmum_size = 3145728; //3mb 
$image_type_allowed = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if(isset($_POST["oneimgtxt"])){//<!------------------ this line is not working
        if((!empty($_FILES[$_FILES['upimage']['tmp_name']])) && ($_FILES["upimage"]['error'] == 0)){
            $file=$_FILES['upimage']['tmp_name'];
            $image_count = count($_FILES['upimage']['tmp_name']);
            if($image_count == 1){
                $image_name = $_FILES["upimage"]["name"];
                $image_type = $_FILES["upimage"]["type"];
                $image_size = $_FILES["upimage"]["size"];
                $image_error = $_FILES["upimage"]["error"];
                if(file_exists($file)){//if file is uploaded on server in tmp folder (xampp) depends !!
                    $filetype =exif_imagetype($file); // 1st method to check if it is image, this read first binary data of image..
                    if (in_array($filetype, $image_type_allowed)) {
                        // second method to check valid image
                        if(verifyImage($filename)){// verifyImage is function created in fucrenzione file.. using getimagesize
                            if($ImageSizes < $maxmum_size){//3mb 
                                $usr_dir = "folder/". $image_name;
                                move_uploaded_file($file, $usr_dir);
                            }else{
                                $error_container["1006"]=true;
                            }
                        }else{
                            $error_container["1005"]=true;
                        }
                    }else{
                        $error_container["1004"]=true;
                    }
                }else{
                    $error_container["1003"]=true;
                }
            }else{
                $error_container["1002"]=true;
            }
        }else{
            $error_container["1007"]=true;
        }
    }else{//this else of image issset isset($_POST["oneimgtxt"])
        $error_container["1001"]=true;//"Error during uploading image";
    }
    echo json_encode($error_container);
}
?>

在chrome检查元素我得到了这个.. image 这是我用jj的js代码...

$(".sndbtn").click( function(e){
        var form = $("#f12le")[0];
        var formdata = new FormData(form)
        $.ajax({
            type:'POST',
            //method:'post',
            url: "pstrum/onphotx.php",
            cache:false,
            data: {oneimgtxt : formdata},
            processData: false,
            contentType: false,
            success:function (e){console.log(e);}
        });
    });

这是html代码:

<form  method="post" id="f12le" enctype="multipart/form-data">
   <input type="file" name="upimage"/>
   <label for="imgr">Choose an Image..</label>
   <textarea placeholder="Write something about photo"></textarea>
   <input   type="button" name="addimagedata" value="Post" class="sndbtn"/>
</form>

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您应该将FormData作为整个数据对象发送,而不是另一个数据对象的一部分。所以,它应该是这样的 -

$(".sndbtn").click( function(e){
    var form = $("#f12le")[0];
    var formdata = new FormData(form)
    $.ajax({
        type:'POST',
        //method:'post',
        url: "pstrum/onphotx.php",
        cache:false,
        data: formdata,
        processData: false,
        contentType: false,
        success:function (e){console.log(e);}
    });
});
  

现在,您应该能够按原样访问表单。例如,如果表单中有任何名称为inputxt的输入,则应该可以使用$_POST['inputxt']访问它。如果您有任何名为input type="file"的{​​{1}},则需要通过upimage进行访问。所以,如果你想为此做$_FILES['upimage']。你可以这样做:

isset()

答案 1 :(得分:0)

使用文件输入随时在表单上添加enctype

  <form enctype="multipart/form-data" >
  <input type=file />
  ...
  </form>

并确保它始终是POST请求。 祝你好运......!

答案 2 :(得分:0)

我对此事感到头痛!你应该在你的PHP代码中使用$_FILES['name_of_dom_element'];