4

背景-たくさんのボタンを含むWebページがあります(POSシステムを考えてください)。ボタンの名前(特定の順序で並べるために使用)と、アイテムとコストの2つの部分を含むボタンのテキストをユーザーが編集できるようにしたいと思います。現在、PHPページ(編集が行われる場所)から別のPHPページ(データベースに書き戻す場所)にデータを渡すことで機能していますが、AJAXメソッドをさらに使用してjsに渡したいと考えています。編集が保存されたときにを更新する関数。ボタンの数は非常に多いので、スクリプトに読み込むボタンの正確な数はわかりません。現在、私はこのようなものを持っています...

echo "<td><input type='text' name='btn[]' size='5' value='" . $row['button'] . "'/></td>";
echo "<td><input type='text' name='itm[]' size='5' value='" . $row['item'] . "'/></td>";
echo "<td><input type='text' name='prc[]' size='5' value='" . $row['price'] . "'/></td>";

これは私が持っているPHPページに送信されます...

$buttonArray = $_POST['btn'];
$itemArray = $_POST['itm'];
$priceArray = $_POST['prc'];

$numberofItems = count($itemArray);

for ($i=0; $i<$numberofItems; $i++)
{
$sql = "UPDATE concessions SET button = '".$buttonArray[$i]."', item = '".$itemArray[$i]."', price = '".$priceArray[$i]."'";
mysql_query($sql);
}

document.form.elementsを見てjsで同様のことをしたいのですが、何か(および配列など)として送信する方法がわかりません。forループを使用してループすることができます。どんな提案でも大歓迎です。

4

1 に答える 1

1

これを行うには非常に簡単な方法があります: この単純な JavaScript 関数を使用します (最新の jquery がロードされていることを確認してください)。

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

この関数は、フォーム要素を正しい順序でシリアル化し、javascript オブジェクトを出力します。値を解析するには、ajax で次のように使用する必要があります。

var objects = $("#ID_OF_YOUR_FORM").serializeObject();

$.ajax({
   url: "your_ajax_file_location.php",
   type: "POST",
   data: ({
       objects:objects,
       otherdata:otherdata
     }),
   success: function(msg){
        /* do whatever here */
    }
 });

Ajaxはそれを魔法のように行い、そのオブジェクトをphp配列に自動的に変換してphpに投稿します...これを試してください:

echo "<pre>".$_POST['objects']."</pre>";

PHP 配列は次のようになります。

{
    btn= array(
               "your btn1 info",
               "your btn2 info",
               "your btn3 info"
               );

    itm= array(
               "your itm1 info",
               "your itm2 info",
               "your itm3 info"
               );

    prc= array(
               "your prc1 info",
               "your prc2 info",
               "your prc3 info"
               );

}

このタイプの配列から、データベースを更新するために php で操作するのは非常に簡単です。

于 2012-12-31T15:26:13.613 に答える