0

以下に、1 つの入力フィールドで正常に動作するコードをいくつか示します。ただし、#addForm という div をクリックするとフォームに追加のフィールドを追加するコードがいくつかあり、入力の名前は name="itemName[]" です。

<script>
    $(document).ready(function() {
        $('body').on('click', '.save', function(e) {
            var string = $(this).serialize();
            $.ajax({
                type: "POST",
                url: "add_room.php",
                data: string,
                cache: false,
                success: function(data){
                    $('#message').text('The id of the inserted information is ' + data);
                }
            });
        });
    });
    $(document).ready(function(){
        $('#addForm').on('click', function(){
            $('<label for="itemName[]">Item</label><input class="itemName" type="text" name="itemName[]"><label for="itemCondition">Condition</label><input class="itemCondition" type="text" name="itemCondition"><div class="save">Save Item</div>').fadeIn(500).appendTo('#mainForm');
        });
    });
    </script>

ご覧のとおり、ほとんどのコードがそこにありますが、シリアライズと混同されており、php 側でこれをどのように処理すればよいかわかりません。

これは、これまでのphpのスクリプトです。

<?PHP

    include('dbConfig.php');

    $item = $db->real_escape_string($_POST['itemName']);

    if ($stmt = $db->prepare("INSERT test (test_title) VALUES (?)"))
    {
        // Use an s per variable passed to the string, example - "ss", $firstname, $lastname
        $stmt->bind_param("s", $item);
        $stmt->execute();
        $stmt->close();

        echo $db->insert_id;
        //echo "success";
    }
    // show an error if the query has an error
    else
    {
        echo "ERROR: Could not prepare SQL statement.";
    }
?>
4

4 に答える 4

0

私の視点から

var string = $(this).serialize();

this上記のコンテキストでは、クラス名を持つ DOM 要素の参照である可能性が最も高くsave、フォームを送信するためのボタンである可能性があります。

ただし、serialize() が呼び出される正しい要素はフォーム要素である必要があります。

サーバー側から何も取得できないのはそのためだと思いますが、

$_POST['itemName']

まずオブジェクトを見て$_POST、そこから必要なデータを抽出する方法を理解することをお勧めします。

それが役に立てば幸い

于 2013-07-03T23:10:20.510 に答える
0

<form method="POST" class="save" action="add_room.php">
<input type="text" name="itemName[]"/>
<input type="text" name="itemName[]"/>
<button type="submit">Save</button>
</form>

jQuery

$(document).on("submit",".save",function(e){
e.preventDefault();
$.post($(this).attr("action"),$(this).serialize(),function(r){
//result
alert(r);
});
});

jsフィドル

PHP

$item = $_POST['itemName']

foreach( $item as $key => $val ) {
  //iterate itemName values
}

PhpFiddle

于 2013-07-03T23:15:26.437 に答える