im пытается достичь следующего, в php у меня есть такая форма:
<form method="post" id="form_1" action="php.php"> <input type="submit" value="add" name="sub"/> <input type="submit" value="envoi" name="sub"/> </form>
файл действия формы:
<?php if( $_POST["sub"]=="add"){ ?> <script> alert("") </script> <?php echo "ZZZZZZ"; ?> <?php } ?>
так что это означает, что если я нажимаю кнопку со значением, добавьте подсказку оповещения, как я могу сделать то же самое (различать как отправку), но используя запрос Ajax:
следующий код так не работает:
$(function(){ $('form#form_1').submit(function(){ var _data= $(this).serialize() $.ajax({ type: 'POST', url: "php.php?", data:_data, success: function(html){ $('div#1').html(html) } }) }) }) </script> </head> <body> <div id="1" style="width: 100px;height: 100px;border: 1px solid red"></div> <form method="post" id="form_1" action="javascript:;"> <input type="submit" value="add" name="sub"/> <input type="submit" value="envoi" name="sub"/> </form> </body>
Вы можете поместить обработчик событий на кнопки, а не на форму. Получите параметры из формы, а затем добавьте параметр для кнопки и отправьте форму. Убедитесь, что обработчик возвращает «false».
$(function() { $('input[name=sub]').click(function(){ var _data= $('#form_1').serialize() + '&sub=' + $(this).val(); $.ajax({ type: 'POST', url: "php.php?", data:_data, success: function(html){ $('div#1').html(html); } }); return false; }); });
Вы должны явно добавить параметр «sub», потому что jQuery не включает те, которые вы вызываете «serialize ()».
В этом случае вам нужно вручную добавить кнопку отправки к опубликованным данным, например:
$(function(){ $('form#form_1 :submit').submit(function(){ var _data = $(this).closest('form').serializeArray(); //serialize form _data.push({ name : this.name, value: this.value }); //add this name/value _data = $.param(_data); //convert to string $.ajax({ type: 'POST', url: "php.php?", data: _data, success: function(html){ $('div#1').html(html); } }); return false; //prevent default submit }); });
Мы используем .serializeArray()
чтобы получить сериализованную версию формы ( это то, что использует .serialize()
внутри ), добавляя нашу пару имя / значение к этому массиву, прежде чем он будет сериализован в строку через $.param()
,
Последнее добавление – это return false
чтобы предотвратить поведение отправки по умолчанию, которое оставило бы страницу.
Много точек с запятой отсутствует, см. Ниже
$(function(){ $('form#form_1').submit(function(){ var _data= $(this).serialize(); $.ajax({ type: 'POST', url: "php.php?", data:_data, success: function(html){ $('div#1').html(html); } }); }); });
Плагин jQuery Form предоставляет некоторые дополнительные функции, и он автоматизировал некоторые задачи, которые мы должны делать вручную, пожалуйста, взгляните на него. Также он обеспечивает лучший способ обработки элементов формы, сериализации, и вы можете подключить функции предварительной обработки перед отправкой формы.