【发布时间】:2018-09-20 10:47:44
【问题描述】:
我正在尝试在不使用表单操作的情况下发送上传的文件和输入文本数据(有 5 个文本字段)。这是正确的方法吗?如果我只发送 form_data 或 {} 中的值但不能同时发送,则此代码可以正常工作。这是我的代码:
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_data 就可以了
move_uploaded_file($_FILES['file']['tmp_name'], $target_path);
【问题讨论】:
-
使用 jquery 选择器,例如 $("#action").val() 而不是 document.getElementById('action').value;很长的 vanila javascript 代码。
标签: javascript php ajax file-upload