Javascript 使用jquery/ajax方法访问输入类型=文件时显示Php错误
我需要使用jquery/ajax访问input type=file,以便将值/文件传递到php页面。但它显示了以下错误消息:Javascript 使用jquery/ajax方法访问输入类型=文件时显示Php错误,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我需要使用jquery/ajax访问input type=file,以便将值/文件传递到php页面。但它显示了以下错误消息: Notice: Undefined index: file in D:\software installed\xampp\htdocs\contact-management \editContactDetails.php on line 16 我下面的代码中是否有任何问题,或者是否有任何方法可以访问它 我的html代码: <form enctype="multi
Notice: Undefined index: file in D:\software installed\xampp\htdocs\contact-management
\editContactDetails.php on line 16
我下面的代码中是否有任何问题,或者是否有任何方法可以访问它
我的html代码:
<form enctype="multipart/form-data">
<input type="file" name="file" id="file" class="file"/>
<input type="button" name="submit" value="Update Details" class="submit" id="UpdateDetails"/>
</form>
$(document).ready(function() {
$("#UpdateDetails").click(function() {
var fn = $('#family_name').val();
var cdid = $('#cdid').val();
var family_name = $('#family_name').val();
var given_name = $('#given_name').val();
var work_phone = $('#work_phone').val();
var mobile_phone = $('#mobile_phone').val();
var email = $('#email').val();
var email_private = $('#email_private').val();
var file_des_1 = $('#file_des_1').val();
var file = $('#file').val();
$.ajax({ //create an ajax request to load_page.php
type: "POST",
url: "editContactDetails.php",
data : {
'cdid' : cdid,
'family_name' : fn,
'given_name' : given_name,
'work_phone' : work_phone,
'mobile_phone' : mobile_phone,
'email' : email,
'email_private' : email_private,
'file_des_1' : file_des_1,
'file' : file
},
dataType: "html", //expect html to be returned
success: function(response){
$("#successUpdate").html(response);
//alert(response);
}
});
});
});
Php文件代码:
//uoload first docuement with description...
$file_des_1 = $_POST['file_des_1'];
$did = mt_rand(100000, 999999);
$file = $_FILES["file"]["name"];
$type = $_FILES["file"]["type"];
$size = ($_FILES["file"]["size"] / 1024);
$temp = $_FILES["file"]["tmp_name"];
//require file formate
$allowedExts = array("doc", "docx", "xls", "pdf");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
//rename uploaded docuement
echo $doc_1 = $did.".".$extension;
$contacts_doc_directory = "contact_directory";
在开始处理传递给php脚本的数据之前,应该检查这些数据是否确实传递给了脚本。。。您可以使用
isset()
和empty()
来检查值是否是作为参数传递的变量集
因此,您的脚本变成:
if (isset($_POST['file_des_1']) && !empty($_POST['file_des_1']) && isset( $_FILES["file"] ) && !empty( $_FILES["file"]["name"] )) {
//uoload first docuement with description...
$file_des_1 = $_POST['file_des_1'];
$did = mt_rand(100000, 999999);
$file = $_FILES["file"]["name"];
$type = $_FILES["file"]["type"];
$size = ($_FILES["file"]["size"] / 1024);
$temp = $_FILES["file"]["tmp_name"];
//require file formate
$allowedExts = array("doc", "docx", "xls", "pdf");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
//rename uploaded docuement
echo $doc_1 = $did.".".$extension;
$contacts_doc_directory = "contact_directory";
}
尝试此文件上载
<form enctype="multipart/form-data" >
<input type="file" name="file" id="file" class="file"/>
<input type="button" name="submit" value="Update Details" class="submit" id="UpdateDetails"/>
</form>
<script src="http://code.jquery.com/jquery-latest.min.js"
type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#UpdateDetails").click(function() {
var formData = new FormData($('form')[0]);
alert(formData);
$.ajax({
url: 'editContactDetails.php', //Server script to process data
type: 'POST',
xhr: function() { // Custom XMLHttpRequest
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ // Check if upload property exists
// myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
}
return myXhr;
},
//Ajax events
// beforeSend: beforeSendHandler,
// success: completeHandler,
//error: errorHandler,
// Form data
data: formData,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});//ajax
});
});
</script>
$(文档).ready(函数(){
$(“#UpdateDetails”)。单击(函数(){
var formData=新的formData($('form')[0]);
警报(formData);
$.ajax({
url:'editContactDetails.php',//用于处理数据的服务器脚本
键入:“POST”,
xhr:function(){//自定义XMLHttpRequest
var myXhr=$.ajaxSettings.xhr();
if(myXhr.upload){//检查upload属性是否存在
//myXhr.upload.addEventListener('progress',progressHandlingFunction,false);//用于处理上载的进度
}
返回myXhr;
},
//Ajax事件
//beforeSend:beforeSendHandler,
//成功:completeHandler,
//错误:errorHandler,
//表单数据
数据:formData,
//告诉jQuery不要处理数据或担心内容类型的选项。
cache:false,
contentType:false,
processData:false
});//ajax
});
});
我对此进行了检查。现在它没有显示错误消息。但是无法使用Jquery/Ajax获取php文件。我如何才能将输入类型=文件值获取到php页面?您能告诉我为什么它会显示错误消息吗?注意:未定义的索引:D:\software installed\xampp\htdocs\contact management\editContactDetails.php中的文件,第16行,我在问您为什么我的代码会显示错误消息.file无法以使用ajax的方式上载。您需要使用iframe或如上所述使用ajax异步上载文件