У меня есть форма с кнопкой, которая может добавлять динамические поля ввода, и это создает проблему AJAX. Мой пост Ajax дает мне 500 ошибок
Но мой консольный журнал для данных прямо сейчас таков:
но мне нужно вставить их как
insert into ticker_content (ticker_id, content)
values (1, 'one'), (1, 'two');
Если это имеет смысл.
Так что, в принципе, проблема в том, что у меня есть несколько входов в каждый момент времени (содержащие текстовые значения) и скрытый ввод в форме, которая дает мне правильный идентификатор тикера.
Однако мне нужно, чтобы мой массив содержал элементы, каждый из которых имеет входное текстовое значение и идентификатор тикера. Поэтому для каждого созданного и заполненного ввода мне нужно также присвоить ему значение скрытого ввода этой формы, чтобы я мог отправлять их в виде пар в цикл foreach и вставлять.
Вот мой 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>