为什么在使用ajax时会得到“未定义的索引:Variable_Name”?

时间:2019-02-07 08:17:18

标签: php jquery ajax html5

我很困惑,为什么使用ajax提交表单时会得到Undefined index: file_upload_name

我刚刚进行了测试,这是php服务器。

<?php
   echo count($_FILES['file_upload_name']['name']);
?>

这是表单,我希望有一个定位按钮来提交表单,而不是常规按钮。

<form method="post" id="the-form" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="file_upload_name[]" multiple>
    <a href="#" id="btn-submit">Submit</a>
</form>

这是jquery,我使用ajax在锚点单击时手动提交表单。

$( document ).ready( function () {
    $( '#btn-submit' ).on( 'click', function ( e ) {
        e.preventDefault();
        $.ajax( {
            url: 'upload.php', 
            dataType: 'text', 
            cache: false,
            contentType: false,
            processData: false,
            data: $( '#the-form' ).serialize(),
            type: 'post',
            error: function ( jqXHR, textStatus, errorThrown ) {
                console.log( "OOPS!: " + errorThrown );
            },
            success: function ( data ) {
                console.log( 'Submit success, server says: ' + data );
            }
        } );
    } );
});

这是服务器抛出的错误

  

成功上传文件:
  通知:未定义索引: 2
D:\ xampp \ htdocs \ sampleupload \ upload.php 中的file_upload_name   
  警告:count():参数必须是在第 2行的 D:\ xampp \ htdocs \ sampleupload \ upload.php 中实现Countable的数组或对象
  0

这只会在使用ajax时发生,而在我有一个常规按钮提交表单时不会发生。我错过了一些东西,但我不知道是什么东西。我现在很困惑。

更新 只是为了清楚起见,我不是在问如何做或现在如何做。我对为什么服务器返回undefined index of variable感到困惑,我想理解它。显然,如果我使用FormData()不会发生这种情况,但是由于我使用serialize(),所以我希望服务器不会说undefined index of variable

0 个答案:

没有答案