javascript - jQuery AJAX - 在单个请求中将文件和变量发送到 PHP

标签 javascript php jquery

我有以下用于上传文件(图片)的 HTML 表单:

<input id="sortpicture" type="file" name="sortpic" />
<button id="upload">Upload</button>

我使用以下 JavaScript/jQuery 将表单数据和变量值发送到 PHP 脚本:

var variable1= 1;

$('#upload').on('click', function() {
    var file_data = $('#sortpicture').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file', file_data);

    $.ajax({
                url: 'upload.php', // point to server-side PHP script 
                dataType: 'text',  // what to expect back from the PHP script, if anything
                cache: false,
                contentType: false,
                processData: false,
                data: {form_data, number: variable1},                         
                type: 'post',
                success: function(php_script_response){
                alert(php_script_response); // display response from the PHP script, if any
            }
    });
});

PHP 脚本 (upload.php) 如下所示:

$filename;
if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
    $filename = $_FILES['file']['name'];
}
echo $filename;

当我运行这段代码时,PHP 抛出一些 undefined index 错误。如果我在 ajax 请求中只使用“data: form_data”(没有 variable1),那么文件上传成功,但我也需要发送变量。我该怎么做?

最佳答案

您还可以将 number 键 => 值附加到表单数据中作为

form_data.append('number',  variable1);

然后在Ajax中调用

data: form_data,

关于javascript - jQuery AJAX - 在单个请求中将文件和变量发送到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457664/

相关文章:

javascript - 从请求头读取数据

javascript - 从后端验证用户 token

php - Mysql查询: Number of candidates enrolled and seat available

javascript - 让所有级别的所有 child

php - 如何使用xquery查找节点并向其添加子节点?

php - JSON -> Xcode 字符串格式

jquery - 如何应用具有关键帧动画的 CSS3 变换?

javascript - 根据 childNode 值对 Div 进行排序

javascript - CSS 覆盖关闭按钮滚动到页面顶部

javascript - 文本区域中的标签