javascript - ajax将多条记录插入数据库

标签 javascript php mysql ajax

我有一个代码块,它是一个动态生成的 div,其表单(基于数组循环)具有通过按钮添加的动态输入:

<?php foreach($tickerDisplays as $key => $ticker):?>

    <form id="Items" method="post">
        <label id="ItemLabel">Item 1: </label>
        <input type="text" name="Items[]"><br/>
        <button type="button" class="moreItems_add">+</button>

        <input type="hidden" name="tickerID" id="tickerID" value="<?php echo $ticker['ticker'] ?>">
        <input type="submit" name="saveTickerItems" value="Save Ticker Items">  
    </form>

<?php endforeach;?>


<script type="text/javascript">

$("button.moreItems_add").on("click", function(e) {
var tickerID = $('#tickerID').val();
  var numItems = $("input[type='text']", $(this).closest("form")).length;
  if (numItems < 10) {
    var html = '<label class="ItemLabel">Item ' + (numItems + 1) + ': </label>';
    html += '<input type="text" name="Items[]"/><br/>';
    $(this).before(html);
    console.log(tickerID);
  }
});

</script>

上面的代码正在运行,并且只允许“+”按钮添加新输入。我从隐藏输入中获取输入值以及股票代码 ID,以准备 ajax 提交。我从序列化表单中得到了我所期望的结果,但我有一个问题。

以下代码:

<script type="text/javascript">
    $("#Items").submit(function(e) {
        e.preventDefault();
        var data = $("#Items").serialize();
        console.log(data);
    });
</script>

打印此内容:

Items%5B%5D=this&Items%5B%5D=is&Items%5B%5D=test&tickerID=1

这是我所期望的。问题是,通过 ajax 调用 mysql 插入函数,我需要为每个值加上tickerID 插入一条记录。我的sql插入正在插入tickerID和内容列。因此,对于上面的 console.log,我需要以下插入:

tickerID   |   content
----------------------
1               this
1               is
1               test

如何正确地将表单数据传递给 ajax,然后执行类似 foreach 的操作以插入多条记录?

ajax调用

<script type="text/javascript">

$("#Items").submit(function(e) {

    $.ajax({
       type: "POST",
       url: addticker.php,
       data: form.serialize(), // serializes the form's elements.
       success: function(data)
       {
           alert(data); // show response from the php script.
       }
     });

    e.preventDefault(); // avoid to execute the actual submit of the form.
});

</script>

addticker.php

$tickerID = $_POST[''];
$content = $_POST[''];

$addTicker = "
    INSERT INTO tickerTable (tickerID, content)
    values ('$tickerID', '$content');
"
$mysqlConn->query($addTicker)

最佳答案

希望这能起作用。

    $items = $_POST['Items'];
    $tickerID = $_POST['tickerID'];

    foreach ($items as $item){

        $addTicker = "
            INSERT INTO tickerTable (tickerID, content)
            values ('$tickerID', '$item');
         "
         $mysqlConn->query($addTicker);
    }

关于javascript - ajax将多条记录插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307634/

相关文章:

javascript - 如何将 Json 字符串作为 javascript 方法参数传递

php - 如何使用多个服务器名称修复连接字符串无效

javascript - 在两个 HTML 和 PHP 之间交换变量

php - 从表中检索特定行并将每一行存储为 session 中的关联数组

mysql计算不重叠的UNION结果

javascript - 使用nodejs获取instagram访问 token

javascript - 有什么方法可以在 css 中设计一个看起来完全像 html 下拉菜单的菜单

javascript - 在 JS/FIREBASE 异步执行中获取变量的问题

php - HashMap 像名称

php - 使用 TCPDF 生成 PDF - 无法提取嵌入字体