使用Ajax上传文件时提交表单

时间:2019-05-07 15:24:34

标签: javascript ajax

我想提交一个表格来上传文件。我的问题是我需要使用AJAX将临时路径发送到php,然后获取一个数组作为响应。

基本上,我想提交表单,获取临时路径,使用JS将其发送到PHP,然后从PHP返回一个数组作为对JS的响应

这是我到目前为止所拥有的:

<form name="form1" id="frmXML" method="post" action="">
<div>
    <label for='upload'>Agregar XML:</label>
    <input id='upload' name="upload[]" type="file" accept=".xml" multiple="multiple" onchange="doSelect(this)"/>
</div>

JS:

function doSelect(el){

    $.ajax({
        type : 'POST',
        data: {
                path:this.document.getElementById('upload').value,
                submit: 'submit',
              }
        url : 'Logica/Usuario.php',
        dataType:'json',
        success : function(response){

            var len =response.length;

            if(len>0)
            {
                //Do something              
            }
        }
    });
    return false;

  }

2 个答案:

答案 0 :(得分:1)

你不能。

撇开混合Ajax和非Ajax的所有后勤工作,这将会发生:

  1. 该表单会将文件发送到PHP
  2. PHP将运行,为文件分配一个临时路径,生成响应,从该临时路径中删除文件,然后退出
  3. JavaScript将获得不再存在的文件路径
  4. JavaScript会向其他PHP发出Ajax请求,并向其发送文件路径
  5. 另一个PHP将查看该文件路径,但找不到该文件,因为该文件已被删除

如果要执行Ajax并将文件关联到它,那么最简单的方法是使用Ajax发出单个 HTTP请求,并将文件包含在其中。

答案 1 :(得分:0)

如果我理解正确,那么您想在ajax请求完成后提交表单,因此应该可以:

    .sticks{
      position:fixed; 
      background-color:red;
      width:100%;
      top:0;
    }