wysylanie formularza php js
2011-09-16 20:08:18
Post #1
korey
witam to znowu ja. robie sobie cos w stylu sondy. od wczoraj kombinowalem z walidiacja pola radio. dzi jak juz mi sie udalo chcialbym wyslac formularz uzywajac js. do tej pory mam cos takiego(normalnie js mam w osobnym pliku)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
<head>
<script type="text/javascript">
function valideForm(form){
var radio = document.getElementsByName('odp');
var id = document.getElementsByName('id')[0].value;
var od = document.getElementsByName('od')[0].value;
var wynik = false;
var wybrano = false;
for(i=0; i<radio.length; i++){
if(radio[i].checked == true){
wybrano = radio[i].value;
wynik = true;
}
}
if(!wynik){
alert("Aby zagłosować musisz wybrać przynajmniej jedna opcję");
}else{
var docUrl = "rat.php";
alert(wybrano + " " + id + " " + od + "Dziękujemy za oddanie głosu");
}
}
</script>
</head>
<body>
<?php
require_once('db.php'); $sql = "SELECT * FROM `pyt_sondy` LIMIT 0 , 1";
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());
$wiersz = mysql_fetch_row(mysql_query($sql));
$odpowiedzi = array($wiersz[2], $wiersz[3], $wiersz[4], $wiersz[5], $wiersz[6], $wiersz[7], $wiersz[8]);
?>
<form action="" onSubmit="valideForm(this);" method="POST">
<?php
echo $wiersz[1].'<br />'; $a=1;
foreach($odpowiedzi as $k => $v){
if(!empty($v)){
echo '<input type="radio" id="'.$v.'" name="odp" value="'.$a.'" />'.$v.'<br />';
}else{}
$a++;
}
?>
<input type="hidden" name="id" value=""color: #0000BB"><?php echo $wiersz[0]; ?>" />
<input type="hidden" name="od" value="2" />
<input type="submit" name="action" onClick="" value="Zagłosuj">
</form>
<div id="target"></div>
</body>
</html>
chce to wyslac metoda post.
potrzebuje podpowiedzi, czy jakiegos przykladu.
2011-09-18 00:44:53
Post #2
gość_jam8
bardzo ładny przykład jak przejść z php na js, potem na jquery.
2011-09-18 16:28:39
Post #3
korey
no dzieki. wsumie to ja dopiero ucze sie js. bardziej interesuje mnie czysty ajax.. wiem jak to wyslac za pomoca get uzywajac xmlhttprequest. jak to samo zrobic z post?
2011-09-18 18:35:56
Post #4
korey
poszukalem w necie i wybazgralem takie cus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
var xmlhttp;
var start = 0;
var end = 9;
var stat = false;
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
function podajDane(id) {
xmlhttp.open('get', 'server.php?id='+id);
xmlhttp.onreadystatechange = odbierzDane;
xmlhttp.send(null);
}
function requestHttp(val) {
xmlhttp.open('get', val+'.php');
xmlhttp.onreadystatechange = odbierzDane2;
xmlhttp.send(null);
target');
}
function odbierzDane2() {
if(xmlhttp.readyState == 4){
if (xmlhttp.status == 200){
document.getElementById('target').innerHTML = xmlhttp.responseText;
}
}
}
function fade(divek){
var el = document.getElementById(divek);
if(stat == false){
setTimeout("fade('" + divek + "')", 80);
if(start < end){ start++; }else{ stat = true; }
el.style.opacity="0."+start;
el.style.border="solid 1px green";
}else{
}
}
function valideForm(form){
var radio = document.getElementsByName('odp');
var id = document.getElementsByName('id')[0].value;
var od = document.getElementsByName('od')[0].value;
var wynik = false;
var wybrano = false;
for(i=0; i<radio.length; i++){
if(radio[i].checked == true){
wybrano = radio[i].value;
wynik = true;
}
}
if(!wynik){
alert("Aby zagłosować musisz wybrać przynajmniej jedna opcję");
}else{
var docUrl = "rat.php";
var params = "odp="+wybrano+"&id="+id+"&od="+od;
xmlhttp.open('POST', docUrl, true);
xmlhttp.setRequestHeader('User-Agent', 'XMLHTTP/1.0');
xmlhttp.setRequestHeader('Content-type', 'x-www-form-urlencoded');
xmlhttp.onreadystatechange = odbierzDane2;
xmlhttp.send(params);
alert(wybrano + " " + id + " " + od + "Dziękujemy za oddanie głosu");
}
target').innerHTML = 'tresc';
}
niestety php zwraca mi ze post jest pusta. ;( co tu jest zle?
2011-09-20 09:43:09
Post #5
nospor
Czemu do ajaxa nie użyjesz np. jQuery? Rezasz się w czystym js a do ajaxa to porostu masakra.
2011-09-20 17:24:23
Post #6
gość_korey
tzn jak uzyc tego jquerty?
2011-09-20 20:18:44
Post #7
nospor
Ajax ogólnie:
http://api.jquery.com/jQuery.ajax/
Szybki post:
http://api.jquery.com/jQuery.post/
2011-09-20 20:59:30
Post #8
gość_korey
no ale do tego musialbym jakies biblioteki pobierac..?
2011-09-20 21:04:05
Post #9
nospor
korey, to na pewno ty pod tym gościem się kryjesz?
Tak, musisz dołączyć jQuery.
2011-09-20 21:07:12
Post #10
gość_Mordy
Taak. Kurde a nie da się tego zrobic bez bibliotek..?
To ja :p
2011-09-20 21:18:02
Post #11
nospor
Da się, mniej więcej tak jak robiłeś. Ale ja w tej mordędze nie będę brał udziału
2011-09-20 21:45:19
Post #12
gość_korey
to zostaje mi jquery? ;/
2011-09-20 21:53:36
Post #13
nospor
Przecież w jquery robi się to o niebo krócej i szybciej. Linka ci podałem, masz tam przykłady.
A w czystym js ajaxem się nigdy nie bawiłem więc ci nie pomogę co możesz mieć w tym swoim kodzie źle.
2011-09-21 09:44:06
Post #14
gość_korey
no to biore sie za studiowanie tego fw..

tylko wtedy nie naucze sie js ;(
2011-09-21 09:46:26
Post #15
nospor
To nie framework a biblioteka.
I jQuery nie przeszkadza w nauce js. jQuery to tylko uzupełnienie, które ułatwia kupę spraw, jak chociażby ten AJAX.
Odpowiedz