Javascript 使用一个ajax调用发送上传的文件和其他数据
我试图发送上传的文件和输入文本数据(有5个文本字段),而不使用表单操作。如果这是正确的方法,那么如果我只发送form_数据或{}中的值,而不是同时发送两者,那么这段代码可以正常工作。这是我的代码: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
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文件中正确接收。你能帮我解决这个问题吗,这个错误已经很久了:(检查您的服务器日志以查看导致错误的原因