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// id sondy
        var od = document.getElementsByName('od')[0].value// login
        var wynik = false;
        var wybrano = false;
//    alert(form.odp.length);
        for(i=0; i<radio.length; i++){// same pola radio - 5

            if(radio[i].checked == true){
                wybrano = radio[i].value// nadaje wartość zaznaczonego pola
                wynik = true;
            }

        }
if(!wynik){
    alert("Aby zagłosować musisz wybrać przynajmniej jedna opcję");
}else{
//w tym miejscu chcę wysłać formularz. i nie wiem jak to zrobić
    var docUrl = "rat.php";
    alert(wybrano + " " + id + " " + od + "Dziękujemy za oddanie głosu");
}



//alert(document.forms[0].length);
//document.getElementById('target').innerHTML = 'tresc';
}
</script>
</head>
<body>
<?php
require_once('db.php'); //Połączenie z baza danych
    
    // Pobieramy sonde
    
$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));
    
// echo $wiersz[0]; //ID
    
    
$odpowiedzi = array($wiersz[2], $wiersz[3], $wiersz[4], $wiersz[5], $wiersz[6], $wiersz[7], $wiersz[8]);
?>
<form action="" onSubmit="valideForm(this);" method="POST">
<?php
    
//GENERUJEMY ZAWARTOŚĆ FORMULARZA
    
echo $wiersz[1].'<br />'// PYTANIE
    
$a=1;
    foreach(
$odpowiedzi as $k => $v){
        
// Pola Formularza
                
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]; //id sondy ?>" />
<input type="hidden" name="od" value="2" /><!-- ID USERA -->
<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
// SETTINGS //    
    var xmlhttp;
    var start = 0;
    var end = 9;
    var stat = false;
// END SETTINGS //    
    
    
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
     try {
      xmlhttp = new XMLHttpRequest();
     } catch (e) {
      xmlhttp=false;
     }
    }


function podajDane(id) {
    // switch UL with a loading div
    //theUL.innerHTML = '<div class="loading"></div>';
    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);    
/*
    doc = document.getElementById('menu2');
    var x= doc.children.length;
    
    for(i=0; i<x; i++){
        if(doc.children[i].className==nr){
         // doc.children[i].style.border='solid 1px red';
        }else{
          doc.children[i].style.border='';
        }
    }
*/
        
//     document.getElementById(nr).style.border='solid 1px green';
    start = 0;
    stat = false;
    fade('
target');
}

function odbierzDane2() {
  if(xmlhttp.readyState == 4){
        if (xmlhttp.status == 200){
             document.getElementById('
target').innerHTML = xmlhttp.responseText;
        }
//    location.reload(true);    
    }
}



    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// id sondy
        var od = document.getElementsByName('
od')[0].value// login
        
        var wynik = false;
        var wybrano = false;

//    alert(form.odp.length);
        for(i=0; i<radio.length; i++){// same pola radio - 5

            if(radio[i].checked == true){
                wybrano = radio[i].value;
                wynik = true;
            }

        }

if(!wynik){
    alert("Aby zagłosować musisz wybrać przynajmniej jedna opcję");
}else{
//w tym miejscu chcę wysłać formularz. i nie wiem jak to zrobić
    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");
}



//alert(document.forms[0].length);
//document.getElementById('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