如何在php中使用ajax上传图像

如何在php中使用ajax上传图像,php,ajax,Php,Ajax,如何将图像发送到“进程文件”当我通过ajaxform发布时,这是我的php页面 $("#reg").click(function() { $.ajax({ url: "process_service_person_register.php", type: "post", data: "image": $("#image").val()},

如何将图像发送到“进程文件”

当我通过ajaxform发布时,这是我的php页面

$("#reg").click(function() {

        $.ajax({

            url: "process_service_person_register.php",
            type: "post",
                        data: "image": $("#image").val()}, 
                       }); 

您必须使用对象


如果(窗口中的“FormData”)
{
var fd=新FormData();
fd.append('file',$('#image')[0].files[0]);
$.ajax({
url:“process\u service\u person\u register.php”,
数据:fd,
processData:false,
contentType:false,
键入:“POST”,
成功:功能(结果){
控制台日志(结果);
}
});
}
其他的
{
log('抱歉,FormData对象不可用');
}

如果没有FormData,您将不得不像使用这种方法一样走老路

使用AJAX无法上传文件

但是,您可以通过使用隐藏的Iframe来模仿AJAX的行为(存在其他方式,但这是新旧浏览器最兼容的方式)

例如:

这是您的表格:

<script>
if ("FormData" in window)
{
    var fd = new FormData();
    fd.append('file', $('#image')[0].files[0]);

    $.ajax({
               url: "process_service_person_register.php",
               data: fd,
               processData: false,
               contentType: false,
               type: 'POST',
               success: function(result) {
                   console.log(result);
               }
           });
}
else
{
    console.log('sorry, FormData object is not available.');
}
</script>
upload\u handler.php
或任何假定处理上传请求的文件中,您应该输出如下内容

<iframe name="upload_frame" id="upload_frame" width="1" height="1" frameborder="no" ></iframe>

window.parent.onUploadCallback(callback\u数据);
这将调用原始JavaScript页面上设置的
onUploadCallback
函数

callback\u data
参数最好是JSON序列化的,这样您就可以在函数内部将其用作本机JavaScript对象

例如:

函数onUploadCallback(响应){ if(response.success) 警报(“文件上传:+响应.文件路径”); }否则{ 警报(“上传文件时出错:+response.Error\u消息”); } }

为了使所有的东西更通用,您应该使用类似于“JSONP”的样式,并将“callback”参数传递给
upload\u handler.php
,其中包含要调用的函数的名称。然后将其作为
隐藏的
字段


在所有这些描述之后——我给你的真正建议是——使用一个已经制作好的jQuery库来完成任务

使用它可以很容易地通过它上传图像,而不需要获得确切的代码。。
<script>
if ("FormData" in window)
{
    var fd = new FormData();
    fd.append('file', $('#image')[0].files[0]);

    $.ajax({
               url: "process_service_person_register.php",
               data: fd,
               processData: false,
               contentType: false,
               type: 'POST',
               success: function(result) {
                   console.log(result);
               }
           });
}
else
{
    console.log('sorry, FormData object is not available.');
}
</script>
<form target="upload_frame" action="upload_handler.php" method="POST" enctype="multipart/form-data">
    <div class="control-group">
       <label class="control-label" for="inputEmail">Image</label>
       <div class="controls">
        <input type="file" value="Browse" name="image" id="image" />
        <span style="color: #61625F; font-weight: bolder;"  class="sixth"></span>
       </div>
    </div>
</form>
<iframe name="upload_frame" id="upload_frame" width="1" height="1" frameborder="no" ></iframe>
<script type="text/javascript">
    window.parent.onUploadCallback(callback_data);
</script>