Я использую JavaScript и AJAX для отправки данных формы в файл обработки php, чтобы заполнить базу данных SQL без обновления начальной страницы формы.
Соединение php / SQL работает, но данные формы не отправляются правильно.
Есть два поля: радиогруппа под названием «выбор» и текстовое поле «комментарии». Когда DB заполняется, поле выбора всегда «да» (первое из 3 переключателей), а поле комментариев всегда пустое. Я думаю, что проблема должна заключаться в том, что строится датапостановка, но часы возиться не привели к успеху.
Вот html-форма
<form id="paPoll"> <label><input type="radio" name="RadioGroup1" value="yes" id="choice1">Yes</label> <label><input type="radio" name="RadioGroup1" value="no" id="choice2">No</label> <label><input type="radio" name="RadioGroup1" value="dont_know" id="choice3">I Don't Know</label> <label for="comments">Comments?</label><input name="comments" type="text" id="comments" size="25" maxlength="60"> <input type="button" name="form_process" id="form_process" value="submit" onClick="$.fn.removeMbMenu($.mbMenu.options.actualOpenedMenu,true);" /> </form>
вот функция Javascript / AJAX
<script type="text/javascript"> $(function() { $("#form_process").click(function() { var choice = $("#choice").val(); var comments = $("#comments").val(); var dataString = 'choice='+ choice + '&comments=' + comments; $.ajax({ type: "POST", url: "**ABSOLUTE URL TO PROCESSOR**", data: dataString }); }); }); </script>
здесь находится процессор php
<?php $choice = $_POST ['choice']; $comments = $_POST ['comments']; //perform insert $query = mysql_query("INSERT INTO paPoll (choice, comments) VALUES ('$choice', '$comments')"); if (!query) { die("Database query failed: " . mysql_error()); } ?>
Мысли или предложения?
Я нашел здесь очень похожий вопрос, но нить составляет 3 года. Пользователь предложил это
//Instead of using data: dataString //use data : {param: value, param2: value2}
но я не уверен, как, или в каком формате он хочет получить значения параметра.
спасибо
-слог
Если бы это я, я просто упростил бы себя, используя плагин Form . Его уже получил набор функций ajaxSubmit, чтобы сделать ajaxify вашу форму без особых усилий. У ИТ также есть удобная функция formSerialize
которая будет сериализовать форму для представления ajax или добавить к строке запроса для ссылки. 🙂
Это проще, без плагина и использования существующего кода:
$("#form_process").click(function() { $.ajax({ type: "POST", url: "**ABSOLUTE URL TO PROCESSOR**", data: { 'choice': $("input[@name=RadioGroup1]:checked").val(), 'comments': $("#comments").val() } }); });
В любом случае, вам также необходимо изменить все ваши радиовходы, чтобы иметь уникальный идентификатор (или вообще не ID) … вы не можете использовать тот же самый, что и все, что все атрибуты идентификатора имеют уникальные значения в документе.
несколько недель назад у меня такая же проблема, и я просто пытаюсь использовать старый способ, как это
<script type="text/javascript"> $(function() { $("#form_process").click(function() { //$("#choice").val(); //you cannot use the same id for more than 1 tag var choice = 0; if(document.getElementById("choice1").checked) choice='Yes'; else if(document.getElementById("choice2").checked) choice='No'; else if(document.getElementById("choice3").checked) choice='Dont Know'; var comments = document.getElementById('comments').value; //$("#comments").val(); var dataString = 'choice='+ choice + '&comments=' + comments; $.ajax({ type: "POST", url: "**ABSOLUTE URL TO PROCESSOR**", data: dataString }); }); }); </script>
действительно, я не знаю, я думаю, что это не лучший способ, но эта работа для меня 🙂