簡體   English   中英

Ajax 序列化表格 - PHP 無法獲取單個輸入數據

[英]Ajax serialize form - PHP can't get individual input data

我有一個用於備份文件的 JQuery UI 對話框。 它包含一個輸入框,因此用戶可以添加一個簡短的描述,該描述將成為備份文件名稱的一部分。 所以如果用戶輸入“blue”,則備份文件名為: file_blue_2020-08-08-11 :10:23

表單名稱為: bckup

在我的 Ajax 代碼中,我使用var frm = $('form[name="bckup"]').serialize(); 為表格。

輸入字段的名稱是: dscrb

正如您在我的 PHP 代碼中看到的那樣,我正在嘗試獲取dscrb的值,但它不起作用。 生成的文件名是: file_2020-08-08-11:10:23 但是,如果我將 PHP 代碼更改為使用$_POST["frm"]而不是$_POST["dscrb"] ,則生成的文件名為: file_ dscrb=blue _2020-08-08-11:10:23

所以這告訴我們數據正在發布到 PHP 頁面。

那么為什么$_POST["dscrb"]不起作用?

HTML:

<div id="dialog-backup" style="display: none;" title="Blah?">
    <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0px 12px 22px 0px;"></span>Blaha.</p>
    <form name="bckup">
    <p style="margin-left: 28px;"><label for="dscrb">Description: </label><input id="dscrb" type="text" style="z-index:10000" name="dscrb"> (optional)</p>
    </form>
    <p style="margin-left: 28px;">Blah?</p>
</div>

JS:

$("#backup").click(function() {
    $( "#dialog-backup" ).dialog({
            stack: true,
            resizable: false,
            height: "auto",
            width: 400,
            modal: true,
            buttons: {                  
            "Save": function() {
                //$( this ).dialog( "close" );
                $("#saveConf").trigger("click");
            },
            "Create a backup": function() {
                    $( this ).dialog( "close" );    
                var frm = $('form[name="bckup"]').serialize();
                $.ajax({
                        url : "ajax_functions.php",
                        type: "post",
                        data: { action: "backup", frm: frm },
                        //dataType: "text",
                        dataType: 'json',
                        success : function (response) {
                            var response = response[0]
                                if (response && response.toLowerCase().indexOf("success") >= 0) {
                                    $("#dialg-success-msg").text(response);
                                $("#dialg-success").dialog("open");
                            } else {
                                $("#dialg-failed-msg").text(response);
                                $("#dialg-failed").dialog("open");
                            }                               
                    },
                    error : function(response) {
                                    $("#dialg-failed-msg").text(response);
                            $("#dialg-failed").dialog("open");
                                }
                });
                //return false;
                //////////////////
            },
            Cancel: function() {
                    $( this ).dialog( "close" );
                }
        }
    });
});

PHP:

$dscrpn = isset($_POST["dscrb"]) ? trim(stripslashes($_POST["dscrb"]))."_" : '';    
$backup_file = "backups/File_".$dscrpn.date('Y-m-d-H:i:s');

由於您將發布數據作為frm: frm發送,因此您必須在 PHP 中使用$_POST['frm']

你會得到一個像dcsbr=...這樣的字符串。 要將其轉換為數組,請使用parse_str

$form = [];
parse_str($_POST['frm'], $form);

var_dump($form);

工作示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM