更新:已解决! (下面的答案) 我正在尝试使用我上传的图像文件添加变量。我可以上传图像,但我似乎无法将想要的变量发送到php并将它们发送回去等。
我希望至少将这个名为$ Destination的var发送给php,以及图像数据,这些数据正在运行,也可能是其他变量。以下是我要发送的信息。
var Dest = '<? echo $Destination;?>';
这是我的剧本:
function myFunction() {
var = Dest: '<? echo $Destination;?>'; // This one
var file_data = $('#ImageuploadBtn').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'admin/myUpload.php',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(php_script_response)
{
console.log(php_script_response);
var html = '<img src="../files/' + php_script_response + '" class="DisplayMainImage img-responsive">';
$( ".MainImage" ).replaceWith(html);
}
});
我的PHP:
<?php
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
move_uploaded_file($_FILES['file']['tmp_name'], '../files/' . $_FILES['file']['name']);
$Message = $_FILES['file']['name'];
//// $Destination DOES NOT WORK
$Destination = $_POST['Dest']; /// NO WORK
echo $Message;
}
?>
已解决的问题:我需要这些行。
var Dest = '<? echo $Destination;?>';
form_data.append('Dest', Dest);
答案 0 :(得分:3)
这是语法错误:
var = Dest: '<? echo $Destination;?>'; // This one
^---
这将会杀死整个<script>
块,从而阻止你的ajax调用。
即使该变量赋值有效,也不要在你的ajax代码中使用它。你有一个formdata
,但你唯一放在那里的是一个文件项。
答案 1 :(得分:1)
首先关闭所有
var = Dest: '<? echo $Destination;?>';
会渲染到这样的东西:
var = Dest: 'some text from $Destination php var';
这是不正确的js语法。由于它的语法错误,脚本执行将在此时停止。也许你的意思是这样的:
var dest = '<? echo $Destination;?>';
您可以在浏览器中打开开发人员工具,并在js控制台渲染源上查看。它会显示脚本错误。例如,在chrome中,按ctrl + shift + i
并转到控制台选项卡。
答案 2 :(得分:0)
这是必要的。
var Dest = '<? echo $Destination;?>';
form_data.append('Dest', Dest);