Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Пересылка данных из формы в скрипт и их обработка (https://javascript.ru/forum/misc/7650-peresylka-dannykh-iz-formy-v-skript-i-ikh-obrabotka.html)

Eugene 12.02.2010 20:24

Пересылка данных из формы в скрипт и их обработка
 
Делаю онлайн психологический тест - чтобы результаты подсчитывались и выводились.
Сам алгоритм решения знаю.
Вопрос: как сделать так чтобы данные из radiobutton посылались на скрипт и записывались в переменную.
Заранее спасибо.

demix 14.02.2010 19:50

Мне тоже для курсовой надо сделать психологический тест он-лайн, так я сейчас даже не знаю с чего начать :(

Gvozd 14.02.2010 20:04

Цитата:

Сообщение от Eugene
как сделать так чтобы данные из radiobutton посылались на скрипт и записывались в переменную.

сформулируйте свою мысль точнее.
она имеет минимум два принципиально разных толкования
Цитата:

Сообщение от demix
даже не знаю с чего начать

Цитата:

Сообщение от demix
даже не знаю с чего начать

с изучения основ JS
на этом сайте есть достаточно материалов для этого

Eugene 14.02.2010 20:39

Я имею ввиду, что пользователь отвечает на вопросы в форме используя переключатели radiobuttons, а после нажатия submit эти данные переходят в скрипт, где с ними происходят действия (в данном случае идет их приравнивание "если ответ - а , то к какой-нибудь переменной score прибавляется 1 , если ответ - б, то прибавляется 2 и т.д.")
я смогу приравнять их, записав в массив, но не могу их перекинуть из формы.

demix 14.02.2010 20:59

скорее всего надо каждой радиокнопке присвоить id= либо name=

Eugene 14.02.2010 21:06

я не знаю как этот name потом обработать

Gvozd 14.02.2010 21:11

еще раз:
под словом скрипт, вы понимаете серверный PHP(Perl/etc..)-скрипт или клиентский скрипт?
Цитата:

Сообщение от Eugene
а после нажатия submit эти данные переходят в скрипт

наверно все-таки серверный подразумевается
да, для того чтобы он получил данные, нужно все радиокнопкам выставить name. JS тут не при чем
Цитата:

Сообщение от Eugene
я не знаю как этот name потом обработать

тем способом, который предполагает ваш серверный язык программирования.
в PHP через соответсвующие суперглобальные массивы

demix 14.02.2010 21:26

Неужели средствами JS нельзя получить значение радиокнопки например с помощью var radio1 = document.getElementById('1') ???

demix 14.02.2010 21:38

вот эта конструкция почему-то в любом случае выводит on
<script type="text/javascript">

function r() {
var radio1=document.getElementById('1');
var radio2=radio1.value;
alert (radio2);
}
</script>


<input type="radio" id="1" />

<input type="button" value="r" onclick="r()" />

но видимо я совсем не так написал вот эту строку var radio2=radio1.value;
хотя я на самом деле понятия не имею как еще получить значение радиокнопки, но очень в этом заинтересован

Kolyaj 14.02.2010 21:40

radio1.checked

demix 14.02.2010 22:01

Eugene, вот тебе уже есть начало.
Если радиокнопка нажата, то функция возвращает true , если нет, то false
Осталось как-то сгруппировать кнопки, чтоб например в первом вопросе при трех вариантах ответа можно было нажать только одну из них и в следующем также. если например на странице 10 вопросов, в каждом по три варианта ответа, то после сабмита, мы получим только 10 нажатых кнопок и 20 не нажатых.

Eugene 14.02.2010 22:25

Всем спасибо огромное, но я, если честно так и не понял как надо сделать - наверное тупой.
Если это чему-то поможет, то мне нужно симитировать массив $_POST(как я знаю из PHP) в js - правильно??

demix 14.02.2010 23:00

А зачем тебе пхп использовать? мне кажется , что можно вполне обойтись и js

Eugene 14.02.2010 23:13

Я полтемы об этом и говорю!!!
Я знаю как это сделать на пхп, поэтому и привожу пример с $_POST, но прошу всех кто знает помочь мне сделать то же самое на js, но пока не понимаю, что мне предлагают сделать.

demix 14.02.2010 23:17

Щас усе будет, я почти наковырял немного, только вот отлаживаю. Щас протестирую на маленьком примере и выложу :)

Eugene 14.02.2010 23:21

Ох спасибо тебе, demix, кстати, можешь зайти на мою вторую тему, у меня там готовый выложен, но его надо чуть-чуть отредактировать (он выбирает только 1 "правильный ответ", а надо все)

Eugene 14.02.2010 23:22

+1 тебе!!

demix 14.02.2010 23:29

Смотри вот что я написал, только чета не совсем правильно

<script type="text/javascript">
function r() {
var radio1=document.getElementById('1');
var radio2=radio1.checked;

if (radio2='true'){
alert ('Вы правы');}
else {
alert ('Вы ошиблись');}
}
</script>


Сколько будет 2х2 ???
<form>
<input type="radio" name="radio" id="1" /> 4 <br />
<input type="radio" name="radio" id="2" /> 5 <br />
<input type="radio" name="radio" id="2" /> 3 <br />
</form>
<input type="button" value="r" onclick="r()" />


у меня в любом случае выводит "Вы правы"
кстати где твоя вторая тема?

Eugene 14.02.2010 23:41

"Редактирование скрипта обработки" называется, старался!!

demix 14.02.2010 23:51

О, ну так там уже готовый скрипт, а я тут демонстрирую зачатки какие-то. Я даже расстроился :(
так а в том что осталось сделать то?

Eugene 15.02.2010 06:23

он мне только один ответ делает правильным и прибавояет к score номер этого ответа, а нужно, чтобы после нажатия любого ответа, он прибавлял к score его номер.
(ну если в кратце - то там тест где только 1 ответ правильный, а мне нужен тест, где все отвветы)

JsLoveR 15.02.2010 08:39

Вложений: 1
Eugene,
Блин, я невнимательно прочел тему, ну короче, если Вам надо, чтобы все варианты были правильными, то выложил файлик. 1 выбор из 4 вариантов, суммируется его value (короче - балл варината). Обрабатывает тест
фун-я res() , в которой к переменной score суммируется номер варианта, после вызова фун-и Вы должны сбросить переменную score=0(сделайте сами) для того, чтобы если Вы захотите пройти заново тест переменная score принимала новые значения.
Если хотите тест с большим функционалом - сделаю за деньги.

Eugene 15.02.2010 14:43

всем сапсибо!!

mbasenko 01.10.2010 13:22

Если форма посылает данные методом GET, то они передаются в теле HTTP-запроса. Если методом POST, то они передаются через стандартный поток ввода STDIN, а в глобальную переменную CONTENT_LENGTH записывается длина строки данных. Я сам сейчас ломаю голову - как вытащить информацию из этих двух источников.

Kolyaj 01.10.2010 13:43

mbasenko,
если данные передаются методом GET, то они находятся в заголовках, методом POST -- в теле запроса.

На каком языке вы пытаетесь вытащить данные?

mbasenko 01.10.2010 14:12

У меня передача методом POST, данные хотелось бы вытащить на JavaScript.

Kolyaj 01.10.2010 17:35

Уточню на всякий случай: браузерный JavaScript? Если да, то никак.

mbasenko 01.10.2010 19:29

Большое спасибо!!


Часовой пояс GMT +3, время: 02:22.