JSON到PHP用图像数据发送/接收变量

时间:2016-10-27 15:24:16

标签: php jquery html json ajax

更新:已解决! (下面的答案) 我正在尝试使用我上传的图像文件添加变量。我可以上传图像,但我似乎无法将想要的变量发送到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); 

3 个答案:

答案 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);