используя serializeArray, пытаясь вставить из ajax несколько входов, каждый с идентификатором - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь отправить вызов ajax для формы, где я добавил функциональность для динамического добавления входных данных в форму. Мои формы создаются на основе цикла массива, поэтому иногда у меня есть только одна форма, иногда больше.

Несмотря на это, я могу вывести правильные значения ввода из каждой формы с консолью на кнопке, но я получаю ошибку 500 при отправке ajax.

Одна проблема заключается в том, что если у меня есть 4 ввода в форме, я сбрасываю все 4, а затем одно свое скрытое значение ввода 'tickerID', но я вызываю вставку SQL, где мне нужно вставить каждое значение с этим скрытое значение ввода.

Мой консольный журнал для данных сейчас выглядит так: enter image description here

но мне нужно вставить их как

insert into ticker_content (ticker_id, content)
     values (1, 'one'), (1, 'two');

Если это имеет смысл.

Вот мой addticker.php, который вызывается для вставки:

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

foreach ($items as $item){

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

Так что в основном для каждого значения Items [] мне нужно вставить одно и то же скрытое поле.

Вот моя форма и код JS для справки. Первый блок JS в основном предназначен для функциональных возможностей динамического добавления входных данных, но последний блок JS - это ajax с использованием serializeArray ();

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

    <form id="Items" method="post">   
        <label id="ItemLabel">Item 1: </label>
        <input type="text" name="Items[]"><br/> <!--form starts with one input-->
        <button type="button" class="moreItems_add">+</button> <!--button dynamically adds input, up to 10 per form-->

        <input type="hidden" name="tickerID" id="tickerID" class="tickerIdClass" value="<?php echo $ticker['ticker'] ?>"><!--hidden input used for tickerID-->
        <input type="submit" name="saveTickerItems" value="Save Ticker Items">  <!--submit button-->
    </form>

<?php endforeach;?>




<!-- This is the functionality for each form to click the '+' button and create new inputs -->
<script type="text/javascript">

$("button.moreItems_add").on("click", function(e) {
var tickerID = $(this).closest('form').find('.tickerIdClass').val(); //get value of hidden input for form
  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>

<!-- This is the ajax call to send all filled out and created inputs from form along with the hidden input -->
<script type="text/javascript">
$("#Items").submit(function(e) {
    e.preventDefault();
    var data = $("#Items").serializeArray();
    console.log(data);

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

});

</script> 

1 Ответ

0 голосов
/ 02 октября 2018
$items = $_POST['Items']; 
$tickerID = $_POST['tickerID']; 
$value = "";
foreach ($items as $item){
    $value .= "('$tickerID', '$item'),";
}

$addTicker = "INSERT INTO ticker_content (tickerID, content)
    values {$value}";
$mysqlConn->query($addTicker);

Используйте этот код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...