как перехватить 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, время: 03:59. |