как перехватить POST?
Добрый день, сразу скажу что я слабо знаю JS, работаю с PHP, но вот стоит задача сделать на AJAX кучу запросов.
Тоесть есть форма, к примеру: Код:
<FORM action="start.php" method="post" > так как в дальнейшем таких форм будет много, и в каждой форме инпутов будет разное кол-во. так вот вопрос как мне сделать так, что бы я писал форму в штмл такого типа как сейчас, с кнопкой субмит, а скрипт вместо того что бы перезагружал страницу, отлавливал это все, считывал данные с формы разложил в масив и передал аяксом в тот фаил пхп??? одним словов как перехватить данные POST??? PS:есле допустил грамматические ошибки, приношу извенения |
ну при отправке каждой формы (читай:обработчик события отправки) складывать результаты в хеш
средствами jq ЛЕГКО превратить кучу инпутов в хеш типа { %имяПоля% : %значениеПоля% } потом этот хеш перебираете (тоже средствами jq) и каждое свойство записываете в результирующий хеш получится в результате заполнения всех форм один бооольшой хеш, в котором имена всех этих полей будут связаны с их значениями. потом просто это сериализуете (превращаете в строку) тоже средствами jq, и готовую длинную строку отправляете через POST; только и длине позаботьтесь. по-моему, максимальная длина URL до переполнения буфера - 255 символов |
извеняюсь за наглость, но можете пример небольшой привести есле не сложно, из 2-х инпутов, а то я как писал почти не знаю JS, что бы мне было легче разобраться
вопросы: 1. JQ - это Jquery? 2. а можно обойтись вот без такого onsubmit="return false;" , что бы в теги формы не писать?что бы вообше в штмл формы ничего не дописывать, а просто как обычная форма, а скрипт сам определяет какую форму я отправляю? |
Так, все сделал, все работает, один момент остался, скажите как мне сделать что бы JS автоматом перехватывал пост, тоесть в форме я добавил
onsubmit="sendquery(); return false;" вот без этого onsubmit, можно как то перехватывать???? |
нажать на "добавить в хеш" хотя бы в одной форме и потом на "просмотреть"
<script src="http://yandex.st/jquery/1.6.4/jquery.min.js"></script> <style> form { margin : 5px; } form div { padding: 4px;border-width:5px;border-color:while;border-style:solid; }</style> <div> <form> <div style="border-color:#028482;"> <h2>Форма I.</h2> <label for="name">Ваше имя :</label> <input type="text" id="name" name="name" value="Вася"> <br> <button>добавить к хешу</button> </div> </form> <form> <div style="border-color:#7ABA7A;"> <h2>Форма II.</h2> <label for="surname">Ваша фамилия :</label> <input type="text" id="surname" name="surname" value="Пупкин"> <br> <button>добавить к хешу</button> </div> </form> <form> <div style="border-color:#B76EB8;"> <h2>Форма III.</h2> <label for="middle_name">Ваше отчество :</label> <input type="text" id="middle_name" name="middle_name" value="Ольгович"> <br> <button>добавить к хешу</button> </div> </form> </div> <h1>Посмотр данных</h1> <button id="b">Просмотреть</button> <script> BD = {};//тот хеш. // при отправке формы заполняем бд. $("form").submit(function(e){ debugger var localBD = $(this).serializeArray(); $.each(localBD, function(){ BD[this.name] = this.value; }); e.preventDefault(); }); // показ бд $("#b").click(function(){ var s = ["---------"]; for(var i in BD) s.push("| "+i+" = "+BD[i]); s.push(s[0]); alert(s.join("\n")); }); </script> |
я что то не понял как эта конструкция мне поможет в данной ситуации, есле мне просто надо, что бы при нажатие на кнопку сркипт сам определял форму которую я отправляю, при этом не редактировать саму форму в html, и желательно не использовать jquery??
аналог этому onsubmit="return false;" что есть? в самом скрипте пробовал так писать: var t = document.forms[0]; t.onsubmit.return (false); потом так: function r () {return false;}; var t = document.forms[0]; t.onsubmit = r(); и так: var t = document.forms[0]; t.onsubmit = return false; не работает, где ошибка подскажите?? |
впринципе можете тему закрыть, я пошел другим путем, сделал что бы скрипт сам автоматам всем формам дописывал onsubmit="sendquery(); return false;"
melky спасибо за помощь |
Часовой пояс GMT +3, время: 19:09. |