Jquery ajax FormData 始终为空

Jquery ajax FormData is always empty

我想用 ajax 将一些数据发送到 php 文件。我创建了一个 FormData,然后将我要发送的所有数据附加到它。我在控制台中没有收到任何错误消息。

我的问题是,表单数据总是空的,php 文件也没有获取任何数据。

形式:

<div class="tab-pane show" id="tab5">
                        <form id="AllapotForm" class="form-horizontal" method="post" enctype="multipart/form-data">
                              <table id="products" class="table table-hover">
                                <thead>
                                    <tr class="tr_bold">
                                        <!--width="33.3%"-->
                                        <td class="left" >Létrehozva</td>
                                        <td class="left" >Állapot</td>
                                        <td class="left" >A megrendelő értesítve email-ben</td>
                                        <td class="left" >Megjegyzés</td>
                                    </tr>
                                </thead>
                                <tbody id="allapotok">
                                    <?php
                                    $get_r_allaptok = mysqli_query($kapcs, 
                                    "
                                        SELECT 

                                            rendeles_allapot.*, 
                                            rendeles_allapotok.rendeles_allapotok_nev

                                        FROM rendeles_allapot 
                                        LEFT JOIN rendeles_allapotok ON rendeles_allapot.allapot_allapot_id = rendeles_allapotok.rendeles_allapotok_id

                                        WHERE allapot_rendeles_id = '$id' ORDER BY allapot_id ASC

                                    ")
                                    or die(mysqli_error($kapcs));
                                    if(mysqli_num_rows($get_r_allaptok) > 0 )
                                    {
                                        while($r_allapot = mysqli_fetch_assoc($get_r_allaptok))
                                        {
                                            if($r_allapot['allapot_notify'] == 0 ) { $ertesitve = "Nem"; }
                                            if($r_allapot['allapot_notify'] == 1 ) { $ertesitve = "Igen"; }
                                            echo '<tr>
                                                    <td class="left">'.$r_allapot['allapot_datetime'].'</td>
                                                    <td class="left">'.$r_allapot['rendeles_allapotok_nev'].'</td>
                                                    <td class="left">'.$ertesitve.'</td>
                                                    <td class="left">'.$r_allapot['allapot_comment'].'</td>
                                                </tr>';
                                        }
                                    }
                                    ?>
                                </tbody>
                                </table>
                                <img src="<?php echo $host; ?>/images/assets/preloader.gif" id="preloaderImage2" style="display:none" class="img-responsive" style="margin:10px auto;">

                                  <div class="form-group row">
                                      <label class="control-label col-md-2">Állapot:</label>
                                      <div class="col-md-2">
                                        <select name="allapot" id="allapot" class="input input-select form-control">
                                            <?php
                                            $check_allapot = mysqli_query($kapcs, "SELECT allapot_allapot_id FROM rendeles_allapot WHERE allapot_rendeles_id = '$id' ORDER BY allapot_id DESC LIMIT 1");
                                            if(mysqli_num_rows($check_allapot) > 0 )
                                            {
                                                $allapot_fetch = mysqli_fetch_assoc($check_allapot);
                                                $ertek = $allapot_fetch['allapot_allapot_id'];
                                            }
                                            else
                                            {
                                                $ertek = intval($a['status']);
                                            }
                                            $get_allapotok = mysqli_query($kapcs, "SELECT rendeles_allapotok_id, rendeles_allapotok_nev FROM rendeles_allapotok WHERE rendeles_allapotok_status = 1 ORDER BY rendeles_allapotok_nev ASC");
                                            if(mysqli_num_rows($get_allapotok) > 0 )
                                            {
                                                while($allapot = mysqli_fetch_assoc($get_allapotok))
                                                {
                                                    $selected = $ertek == $allapot['rendeles_allapotok_id'] ? ' selected="selected"':'';
                                                    echo '<option ' . $selected . ' value="' . $allapot['rendeles_allapotok_id'] . '">' . $allapot['rendeles_allapotok_nev'] . '</option>'."\n";
                                                }
                                            }
                                            ?>
                                        </select>
                                      </div>
                                    </div>
                                    <div class="form-group row">
                                      <label class="control-label col-md-2">Megrendelő értesítése email-ben:</label>
                                      <div class="col-md-2">
                                         <input type="checkbox" name="notify" id="notify" class="form-control"  />
                                      </div>
                                    </div>
                                    <div class="form-group row">
                                      <label class="control-label col-md-2">Megjegyzés hozzáadása az email-hez:<span class="help">Amennyiben ezt bepipálja, a megjegyzés az ügyfélnek kiküldött üzenetbe is bele fog kerülni.</span></label>
                                      <div class="col-md-2">
                                         <input type="checkbox" name="add_text" id="add_text" class="form-control" />
                                      </div>
                                    </div>
                                    <div class="form-group row">
                                      <label class="control-label col-md-2">Fájl csatolása az email-hez:</label>
                                      <div class="col-md-2">
                                         <input type="file" name="file" id="file" class="form-control"  />
                                      </div>
                                    </div>
                                    <div class="form-group row">
                                      <label class="control-label col-md-2">Megjegyzés:</label>
                                      <div class="col-md-8">
                                            <textarea name="comment" id="comment" style="width:100%;height:200px;"></textarea>
                                            <div style="margin-top: 10px; text-align: center;">
                                                <a class="saveButton btn btn-primary" style="color:#fff" onclick="allapot_modosit();" id="history_button">Állapot módosítása</a>
                                            </div>
                                      </div>
                                    </div>
                                </form>
                            </div>

我在按钮单击事件上调用此函数。

function send_data()
{   
    var html;
    var RendelesID = <?php echo $id; ?>;
    var RendelesUserEmail = "<?php echo html($a['email']); ?>";
    var RendelesUserName = "<?php echo html($a['nev']); ?>";
    var webshopEmail = "<?php echo $webshopEmail; ?>";
    var webshopName = "<?php echo $webshopName; ?>";
    var Allapot = $( "#allapot option:selected" ).val();
    var Comment = CKEDITOR.instances['comment'].getData();

    if($("#notify").is(':checked')){var Notify = 1;}else{var Notify = 0;}
    if($("#add_text").is(':checked')){var AddToEmail = 1;}else{var AddToEmail = 0;}

    var formData = new FormData($('#AllapotForm')[0]);

    formData.append('fileName', $('#file')[0].files[0]);
    formData.append(RendelesID, RendelesID);
    formData.append(RendelesUserEmail, RendelesUserEmail);
    formData.append(RendelesUserName, RendelesUserName);
    formData.append(webshopEmail, webshopEmail);
    formData.append(webshopName, webshopName);
    formData.append(Allapot, Allapot);
    formData.append(Comment, Comment);
    formData.append(Notify, Notify);
    formData.append(AddToEmail, AddToEmail);

    console.log(formData);

    $.ajax({
         type: 'POST',
         cache: false,
         url: 'files/update_rendeles_allapot.php',
         //dataType: 'html',
         enctype: 'multipart/form-data',
         processData: false, 
         contentType: false,
         data: { formData:formData },
         beforeSend: function(){
            $('#preloaderImage2').show();
         },
         success: function(data)
         {
            alert(data);
         },
         complete: function(){
            $('#preloaderImage2').hide();
         },
         error: function (e) {
            alert(e.responseText);
            console.log(e);
        }
    });
}
         data: { formData:formData },

您需要传递表单数据对象本身,而不是普通对象。

data: formData

你已经看过了吗?

FormData created from an existing form seems empty when I log it

如果是,请尝试检查您的网络看看网络然后看看您的请求。

您也可以尝试通过 Postman 检查 API 是否正常。