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使上载表单显示在原始表单中。

是否在现有表单中调用了元素,即是否有嵌套表单?是的。我试图创建一个可重用的元素,这样它就可以(而且是)以嵌套的形式出现。