4

背景 - 我有一个包含一堆按钮的网页(想想 POS 系统)。我希望用户能够编辑按钮的名称(用于将它们按特定顺序排列)和按钮的文本,其中包含项目和成本两部分。目前我通过将数据从 PHP 页面(编辑完成的地方)传递到另一个 PHP 页面(我将其写回数据库)来工作,但我想使用更多的 AJAX 方法并将其传递给 js保存编辑时更新 a 的功能。由于按钮的数量非常多,我不知道要读入脚本的确切按钮数量。目前我有这样的东西......

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 回答