Javascript CakePHP jQuery异步上传
我试图创建一个异步文件上传,但我遇到了麻烦。以下是我所拥有的元素: 元素:Javascript CakePHP jQuery异步上传,javascript,jquery,cakephp,cakephp-2.0,Javascript,Jquery,Cakephp,Cakephp 2.0,我试图创建一个异步文件上传,但我遇到了麻烦。以下是我所拥有的元素: 元素: <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=
<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>
控制器功能:
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[]或任何其他变量中都不会显示)。有人能帮忙吗
谢谢
jason根据您的评论,您将文件上载元素嵌套在另一个表单中。“从嵌套”是无效的HTML,除了不能提供预期的结果外,还会使浏览器感到困惑。参考
唯一的解决方案是从原始外部表单中删除文件上载表单,并将其放置在外部。使用CSS使上载表单显示在原始表单中。是否在现有表单中调用了元素,即是否有嵌套表单?是的。我试图创建一个可重用的元素,这样它就可以(而且是)以嵌套的形式出现。