Добрый день, я читал все возможные вопросы и ответы здесь на этом сайте весь день, я знаю, что я почти получаю правильный ответ, но кажется, что некоторые из предложений здесь не работают для меня. У меня есть динамическая форма, где пользователь может добавлять и удалять текстовые поля и отправлять запрос через ajax и php. Форма состоит из двух обязательных текстовых полей и кнопок для добавления и удаления другого поля (кроме двух обязательных полей). Пользователь может отправить форму, даже не используя другое дополнительное поле.
Моя проблема в том, что если я нажму кнопку добавления, а позже решит удалить ее, я получаю значение «0» в соответствующей таблице в базе данных даже после нажатия кнопки удаления.
Вот мой HTML:
<form method="POST"> <span class="text-label">Subject:</span> <input type="text" name="subject" id="subject-field" placeholder="Subject name here" maxlength="10" class="record-input-forms" /> <span class="text-label">Section:</span> <input type="text" name="section" id="section-field" placeholder="Subject section here" maxlength="3" class="record-input-forms" /> <a href="#" class="add-field" title="Add student field">+</a> <a class="remove-field" href="#" title="Remove student field">×</a> <a href="#" id="save-button" title="Save">→</a> <div id="student-box-wrap"></div> <span id="status-message"></span> </form>
Вот мой AJAX
$(document).ready(function() { $("#save-button").click(function() { var subject = $("input#subject-field").val(); if (subject == "") { $('#status-message').css({ "color": "#ec3f8c" }); $('#status-message').html('Please fill the subject fields'); return false; } var section = $("input#section-field").val(); if (section == "") { $('#status-message').css({ "color": "#ec3f8c" }); $('#status-message').html('Please fill the section fields'); return false; } var studid = []; $('input[name="studid[]"]').map(function() { studid.push($(this).val()); }); var dataString = 'subject=' + subject + '§ion=' + section + '&studid=' + studid; $.ajax({ type: "POST", url: 'save.php', data: dataString, dataType: "html", success: function(data) { $("input#subject-field").val(''); $("input#section-field").val(''); $("input#field-wrap").remove(); $("#status-message").css({ "color": "#39b1c6" }); $("#status-message").html('Save successfully'); $("#status-message").fadeOut(2000); }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); } }); return false; }); });
мой счетчик Jquery
$(document).ready(function() { var counter = 0; $(".add-field").click(function() { counter += 1; $("#student-box-wrap").append('<div class="field-wrap-' + counter + '"><span id="number-' + counter + '">' + counter + '.</span> Student ID: <input type="text" name="studid[]" class="record-input-forms" /></div>'); }); $(".remove-field").click(function() { if (counter == 0) { alert("Nothing to remove!"); } else { $(".field-wrap-" + counter + "").remove(); counter--; } }); });
И мой PHP
<?php require 'connection.php'; session_start(); $studid = (explode(",", $_POST['studid'])); $subject = mysql_real_escape_string(strtoupper($_POST['subject'])); $section = mysql_real_escape_string(strtoupper($_POST['section'])); $adminid = $_SESSION['AdminID']; mysqli_query($con, "INSERT INTO tbl_subjects(SubjectName, SubjectSection, AdminID) VALUES ('$subject', '$section', '$adminid')"); if (!empty($studid) && !empty($name)) { foreach ($studid as $new) { $sql_1 = "INSERT INTO tbl_student(StudentID, SubjectID) VALUES ('$new', LAST_INSERT_ID())"; mysqli_query($con, $sql_1); } } if (!mysqli_query($con, $sql)) { die('Error: ' . mysqli_error($con)); } ?>
я использовал! пусто в моем php и im получаю такой же результат. Если я вообще не нажимаю кнопку добавления, я не получаю никаких проблем. Его просто при нажатии на него и даже после его удаления переменная в ajax, по-видимому, несут пустые данные в базу данных.