Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用一个ajax调用发送上传的文件和其他数据_Javascript_Php_Ajax_File Upload - Fatal编程技术网

Javascript 使用一个ajax调用发送上传的文件和其他数据

Javascript 使用一个ajax调用发送上传的文件和其他数据,javascript,php,ajax,file-upload,Javascript,Php,Ajax,File Upload,我试图发送上传的文件和输入文本数据(有5个文本字段),而不使用表单操作。如果这是正确的方法,那么如果我只发送form_数据或{}中的值,而不是同时发送两者,那么这段代码可以正常工作。这是我的代码: actionval = document.getElementById('action').value; titleval = document.getElementById('title').value; stageval = document.getElementById('stage').val

我试图发送上传的文件和输入文本数据(有5个文本字段),而不使用表单操作。如果这是正确的方法,那么如果我只发送form_数据或{}中的值,而不是同时发送两者,那么这段代码可以正常工作。这是我的代码:

actionval = document.getElementById('action').value;
titleval = document.getElementById('title').value;
stageval = document.getElementById('stage').value;
substageval = document.getElementById('substage').value;
agentval = document.getElementById('agent').value;

var file_data = $('#uploadFileTrans').prop('files')[0];   
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
    url: "tabs/get_old_contents.php",
    data: {form_data, insert1:actionval, insert2:titleval, insert3:stageval, insert4:substageval, insert5:agentval},                         
    type: 'post',
    complete: function(response){
    alert('Details added successfully!');
            $('#restrans').html(response.responseText);
            // console.log('hey', response.responseText);
            // editor.setValue(response.responseText);
    }
 });
php是这样的:

$action = (isset($_POST['insert1'])?$_POST['insert1']:"");
$title = (isset($_POST['insert2'])?$_POST['insert2']:"");
$stage = (isset($_POST['insert3'])?$_POST['insert3']:"");
$substage = (isset($_POST['insert4'])?$_POST['insert4']:"");
$agent = (isset($_POST['insert5'])?$_POST['insert5']:"");
$date = date("Y/m/d");
这是为了上传,如果我在ajax的数据字段中只有form_数据,它就可以正常工作

move_uploaded_file($_FILES['file']['tmp_name'], $target_path);

不能将
FormData
放在使用AJAX发送的对象中。您需要将其他参数添加到
FormData
对象中,并将其本身用作数据

var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('insert1', actionval);
form_data.append('insert2', titleval);
form_data.append('insert3', stageval);
form_data.append('insert4', substageval);
form_data.append('insert5', agentval);
$.ajax({
  url: "tabs/get_old_contents.php",
  data: form_data,
  processData: false,
  type: 'post',
  complete: function(response) {
    alert('Details added successfully!');
    $('#restrans').html(response.responseText);
    // console.log('hey', response.responseText);
    // editor.setValue(response.responseText);
  }
});

不能将
FormData
放在使用AJAX发送的对象中。您需要将其他参数添加到
FormData
对象中,并将其本身用作数据

var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('insert1', actionval);
form_data.append('insert2', titleval);
form_data.append('insert3', stageval);
form_data.append('insert4', substageval);
form_data.append('insert5', agentval);
$.ajax({
  url: "tabs/get_old_contents.php",
  data: form_data,
  processData: false,
  type: 'post',
  complete: function(response) {
    alert('Details added successfully!');
    $('#restrans').html(response.responseText);
    // console.log('hey', response.responseText);
    // editor.setValue(response.responseText);
  }
});

您必须将所有数据添加到FormData对象,并将其作为数据参数传递。另外,将processData设置为false,将contentType设置为false

var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('insert1', actionval);
form_data.append('insert2', titleval);
form_data.append('insert3', stageval);
form_data.append('insert4', substageval);
form_data.append('insert5', agentval);
$.ajax({
    url: "tabs/get_old_contents.php",
    data: form_data,                   
    type: 'post',
    processData: false,
    contentType: false,
    complete: function(response){
            alert('Details added successfully!');
            $('#restrans').html(response.responseText);
            // console.log('hey', response.responseText);
            // editor.setValue(response.responseText);
    }
});

您必须将所有数据添加到FormData对象,并将其作为数据参数传递。另外,将processData设置为false,将contentType设置为false

var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('insert1', actionval);
form_data.append('insert2', titleval);
form_data.append('insert3', stageval);
form_data.append('insert4', substageval);
form_data.append('insert5', agentval);
$.ajax({
    url: "tabs/get_old_contents.php",
    data: form_data,                   
    type: 'post',
    processData: false,
    contentType: false,
    complete: function(response){
            alert('Details added successfully!');
            $('#restrans').html(response.responseText);
            // console.log('hey', response.responseText);
            // editor.setValue(response.responseText);
    }
});

使用jquery选择器,如$(“#action”).val()而不是document.getElementById('action').value;使用jquery选择器,比如$(“#action”).val(),而不是document.getElementById('action').value;long vanila javascript代码。这将数据发送到php,我提到的在php文件中读取的方式,是corect方式,还是我还需要在php代码中进行更改?这将数据发送到php,我提到的在php文件中读取的方式,是corect方式,或者我需要对php代码进行更改吗?我在jquery.min.js上得到一个错误500内部服务器错误。我检查了所有警报,php文件中的所有变量都正确接收。你能帮我解决这个问题吗,这个错误已经很久了:(检查你的服务器日志,看看是什么导致了500个错误我在jquery.min.js上得到了一个错误500内部服务器错误。我检查了所有警报,所有变量都在php文件中正确接收。你能帮我解决这个问题吗,这个错误已经很久了:(检查您的服务器日志以查看导致错误的原因