首页 > 解决方案 > 如何通过 Ajax 传递多个变量?[Javascript 对象]

问题描述

我正在使用 ajax/php 加载文件,但我不明白如何在 ajax 函数中添加除文件之外的其他变量。

HTML:

<html>
    <body>      
        Select image to upload:     
        <input type="file" name="fileToUpload" id="fileToUpload">       
        <button onclick="loadNewPicture('tomato')" id="upload">Upload</button>
    </body>
</html>

JAVASCRIPT:

function loadNewPicture(vegetable)
    {
        var file_data = $('#fileToUpload').prop('files')[0];     
        var form_data = new FormData();                                 
        form_data.append('file', file_data);

        $.ajax(
        {
            url: 'TEST.php',
            dataType: 'text',
            cache: false,
            contentType: false,
            processData: false,
            data: form_data + '&vegetable =' + vegetable ,                                               
            type: 'post',
         });
    }

PHP:

<?php

    if ( 0 < $_FILES['file']['error'] ) 
    {
        echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else 
    {
        $vegetable = ($_POST["vegetable"]);
        move_uploaded_file($_FILES['file']['tmp_name'], 'image/test/' . $_FILES['file']['name']);
    }
?>

当然,说“未定义的索引:文件”是行不通的。知道我该怎么做吗?

标签: javascriptphpjqueryajax

解决方案


当然,说“未定义的索引:文件”是行不通的。知道我该怎么做吗?

这是因为在您的代码名称中input[type='file']fileToUpload。

因此,将您的 PHP 代码更改为

<?php

    if ( 0 < $_FILES['fileToUpload']['error'] ) 
    {
        echo 'Error: ' . $_FILES['fileToUpload']['error'] . '<br>';
    }
    else 
    {
        $vegetable = ($_POST["vegetable"]);
        move_uploaded_file($_FILES['fileToUpload']['tmp_name'], 'image/test/' . $_FILES['fileToUpload']['name']);
    }
?>

推荐阅读