我正在尝试将图像和标题字段值传递给PHP,我通常使用$ _FILES数组直接使用PHP处理文件上传,我不知道如何使用ajax创建/传递此数组到PHP。 我的表格:
<form role="form" name="updateProductForm" id="updateProductForm" method="POST" enctype="multipart/form-data">
<input name="imgOne" id="imgOne" type="file" title="Add Image">
<a class="btn btn-primary" name="updateProduct" id="updateProduct">Update Product</a></div>
</form>
我正在尝试使用它传递给PHP:
$('#updateProduct').on('click', function() {
try {
ajaxRequest = new XMLHttpRequest();
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser broke!");
return false;
}
}
}
ajaxRequest.open("POST", "../Controller/ProductController.php", true);
ajaxRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajaxRequest.send("title=" + $("#title").val() + "&imgOne=" + $("#imgOne"));
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
console.log(ajaxRequest);
}
}
});
在PHP中,我正在尝试这个:
if (isset($_POST["edit"])) {
$id = $_POST["edit"];
$imgName = $_FILES["file"]["imgName"];
}
优素福
答案 0 :(得分:3)
我在我的一个项目中做到了这一点,以下代码适用于我。 请根据需要对代码进行必要的修改。
我的表单按钮:
<form name="upload_img" enctype="multipart/form-data" id="upload_img">
<input type="file" style="display:none" id="upload-image" name="upload-image"></input>
<button id="upload_image" type="button">Save</button>
</form>
我的JQuery / Ajax:
$('#upload_image').click(function()
{
var form = new FormData(document.getElementById('upload_img'));
//append files
var file = document.getElementById('upload-image').files[0];
if (file) {
form.append('upload-image', file);
}
$.ajax({
type: "POST",
url: "URL",
data: form,
cache: false,
contentType: false, //must, tell jQuery not to process the data
processData: false,
//data: $("#upload_img").serialize(),
success: function(data)
{
if(data == 1)
$('#img_msg').html("Image Uploaded Successfully");
else
$('#img_msg').html("Error While Image Uploading");
}
});
//alert('names');
});
答案 1 :(得分:0)
您可以使用jQuery文件上传插件
$('#imgOne').change(function(){
$.ajaxFileUpload({
fileElementId: 'imgOne',
url: "../Controller/ProductController.php",
dataType: 'json',
success: function(response)
{
//Success Code Here
},
error: function()
{
//Error Code Here
}
});
});
答案 2 :(得分:0)
首先您需要通过以下html代码行
选择图像文件input type="file" id="image_to_upload"
之后,您需要编写以下jQuery代码来捕获此事件。
jQuery.noConflict(); formdata = new FormData(); jQuery("#image_to_upload").on("change", function() { var file = this.files[0]; if (formdata) { formdata.append("image", file); jQuery.ajax({ url: "destination_ajax_file.php", type: "POST", data: formdata, processData: false, contentType: false, success:function(){} }); } });
在目标ajax文件中,您可以通过以下变量访问图像
print_r($_FILES);