我想创建一个异步文件上传,但我打墙。下面是我在一个元素:CakePHP jQuery异步上传
元素:
<div style="border:0px solid darkgray; width:100%; text-align: right; text-decoration: underline; font-weight: bold;">
<form id="upload_form" enctype="multipart/form-data">
<input type="file" accept="" id = "templatePath" name = "templatePath" name="MAX_FILE_SIZE" value="104857600">
<input type="submit" value="Submit" id = "bntSubmit" name = "bntSubmit" onclick="submitFileUpload();" >
</form>
</div>
JQuery的:
function submitFileUpload(){
try{
var FileUrl = "/staff/passport/upload_file/";
var request_timeout = 50000;
var formData = new FormData();
var files =$('#templatePath')[0].files[0];
formData.append('templatePath', files);
$.ajax({
url: FileUrl,
type: 'POST',
timeout: request_timeout,
cache: false,
contentType: false,
processData: false,
data:formData,
beforeSend: function(xhr){
},
success: function(data) {
try{
if(data.status =='ok'){
}else{
}
}catch(ex){
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
}
});
return false;
}catch(ex){
}
}
控制器功能:
public function upload_file(){
try{
$this->autoRender = false;
} catch (Exception $e){
return $this->EncodeError($e);
}
}
jquery似乎很好。击中断点,我可以看到对象“文件”已创建并具有文件属性。控制器函数也被调用,但表单数据不会显示在我的调试器中(“this”或_FILES []或任何其他变量中都没有)。任何人都可以帮忙吗?
感谢 杰森
您的元素是否在现有表单中调用,即是否有任何机会嵌套表单? – jimmymadon
是的。我试图创建一个可重用的元素,因此它可以(并且)处于嵌套形式。 – jason