Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2011, 14:17
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

как перехватить POST?
Добрый день, сразу скажу что я слабо знаю JS, работаю с PHP, но вот стоит задача сделать на AJAX кучу запросов.
Тоесть есть форма, к примеру:

Код:
<FORM action="start.php" method="post" >
<INPUT type="text" NAME="name"  VALUE="test" /> 
<INPUT type="text" NAME="param" VALUE="test" /> 
<INPUT type="text" NAME="type"  VALUE="test" /> 
<INPUT type="text" NAME="numer" VALUE="test"  />
<INPUT type="radio" name="integer" value="1"> 
<INPUT type="SUBMIT" VALUE="Послать" />
</FORM>
ну вообшем такого типа, при нажатии должно передаваться ну и скажеми записаться в базу, на данный момент все робит, но надо сделать это на аяксе, тоесть на аяксе это тоже вроде робит, но при учете, что в скрипте(JS) я указываю каждое поле, и данные которые должны передаваться, и вместо кнопки субмит ставлю обычную кнопку? и вешаю функцию отправки, на онклик -- это не правильно

так как в дальнейшем таких форм будет много, и в каждой форме инпутов будет разное кол-во.

так вот вопрос как мне сделать так, что бы я писал форму в штмл такого типа как сейчас, с кнопкой субмит, а скрипт вместо того что бы перезагружал страницу, отлавливал это все, считывал данные с формы разложил в масив и передал аяксом в тот фаил пхп???

одним словов как перехватить данные POST???
PS:есле допустил грамматические ошибки, приношу извенения
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2011, 14:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ну при отправке каждой формы (читай:обработчик события отправки) складывать результаты в хеш

средствами jq ЛЕГКО превратить кучу инпутов в хеш типа

{
    %имяПоля% : %значениеПоля% 
}


потом этот хеш перебираете (тоже средствами jq) и каждое свойство записываете в результирующий хеш

получится в результате заполнения всех форм один бооольшой хеш, в котором имена всех этих полей будут связаны с их значениями.

потом просто это сериализуете (превращаете в строку) тоже средствами jq, и готовую длинную строку отправляете через POST;

только и длине позаботьтесь. по-моему, максимальная длина URL до переполнения буфера - 255 символов
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2011, 15:27
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

извеняюсь за наглость, но можете пример небольшой привести есле не сложно, из 2-х инпутов, а то я как писал почти не знаю JS, что бы мне было легче разобраться
вопросы:
1. JQ - это Jquery?
2. а можно обойтись вот без такого onsubmit="return false;" , что бы в теги формы не писать?что бы вообше в штмл формы ничего не дописывать, а просто как обычная форма, а скрипт сам определяет какую форму я отправляю?

Последний раз редактировалось czp, 16.10.2011 в 16:35.
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2011, 20:50
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

Так, все сделал, все работает, один момент остался, скажите как мне сделать что бы JS автоматом перехватывал пост, тоесть в форме я добавил
onsubmit="sendquery(); return false;"

вот без этого onsubmit, можно как то перехватывать????

Последний раз редактировалось czp, 16.10.2011 в 21:39.
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2011, 23:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

нажать на "добавить в хеш" хотя бы в одной форме и потом на "просмотреть"
<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>
Ответить с цитированием
  #6 (permalink)  
Старый 17.10.2011, 18:09
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

я что то не понял как эта конструкция мне поможет в данной ситуации, есле мне просто надо, что бы при нажатие на кнопку сркипт сам определял форму которую я отправляю, при этом не редактировать саму форму в 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;

не работает, где ошибка подскажите??

Последний раз редактировалось czp, 17.10.2011 в 18:31.
Ответить с цитированием
  #7 (permalink)  
Старый 17.10.2011, 20:45
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

впринципе можете тему закрыть, я пошел другим путем, сделал что бы скрипт сам автоматам всем формам дописывал onsubmit="sendquery(); return false;"
melky спасибо за помощь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Как сделать POST запрос? clickpincode Общие вопросы Javascript 2 18.03.2010 14:57
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56