Avatar billede madszeneli Nybegynder
11. marts 2011 - 13:39 Der er 7 kommentarer

Problemer med at få javascript til at snakke sammen med php

Hej med jer,

Jeg har et problem med en form, som jeg sidder og leger lidt med. Jeg har pyntet den med lidt validering, og det fungere rigtig godt

Nu vil jeg prøve at få min form til at poste i databasen, uden at opdatere siden - det har jeg dog problemer med, da jeg ikke er så skarp til Javascript.

Jeg har nedenfor postet koderne i de forskellige filer. Hvad skal jeg gøre om?

På forhånd tak.





En lille del af "validation.js":

    //On Submitting
    form.submit(function(){
       
        var name = $("#name").val();
        var efternavn = $("#efternavn").val();
        var email = $("#email").val();
        var pass2 = $("#pass2").val();
        var dataString = 'name='+ name + '&efternavn=' + efternavn + '&email=' + email + '&pass1=' + pass1 + '&pass2=' + pass2;
       
       
        if(validateName() & validateEfternavn() & validateEmail() & validatePass1() & validatePass2()){
           
           
            $.ajax({
            type: "POST",
            url: "http://xxxxxxx.dk/php/opret.php",
            data: dataString,
            success: function(){
            $('.success').fadeIn(200).show();
            $('.error').fadeOut(200).hide();
            }
            });
           
           
            return true
            }
        else
            return false;
    });




Hele min "opret.php"               
                       
                        <?php
                        if($_POST)
                        {
                        $name = $_POST['name'];
                        $efternavn = $_POST['efternavn'];
                        $email = $_POST['email'];
                        $pass2 = $_POST['pass2'];
                        $dato=date("d.m.Y");
                       
                        mysql_connect("localhost","root","utp24ett");
                        mysql_select_db("data_jobs");   
                       
                        mysql_query("INSERT INTO `brugere` ( `ID` , `dato`, `name` , `efternavn` , `email` , `pass2` , `status` )
                                    VALUES('', '$dato', '$name', '$efternavn', '$email', '$pass2', '2');")or die("Fejl 2 " . mysql_error());                                   
                                               
                        }else { }
                       
                        ?>
Avatar billede olebole Juniormester
11. marts 2011 - 14:31 #1
<ole>

*) Hvad virker - og hvad virker ikke?
*) Hvordan ser den færdige query streng ud, inden du sender den?
*) Hvad modtager du på serveren?

/mvh
</bole>
Avatar billede madszeneli Nybegynder
11. marts 2011 - 15:58 #2
HVAD VIRKER - OG HVAD VIRKER IKKE
Det virker hvis jeg tilføjer en action="opret.php" i min formular, og dernæst fjerner ajax-delen i validation.js - Men jeg modtager intet i databasen, hvis jeg gør som beskrevet i tråden.

HVORDAN SER DEN FÆRDIGE QUERY STRENG UD, INDEN DU SENDER DEN?
Jeg har kun den kode, som jeg har indsat i tråden. Men jeg formoder, at du mener at der skulle mangle noget. Og det kan jo være det, som er problemet. Men hvad skulle det være?

HVAD MODTAGER DU PÅ SERVEREN?
Ingenting :-(
Avatar billede madszeneli Nybegynder
11. marts 2011 - 16:15 #3
Nedenfor har jeg indsat koden som fungere, men den giver mig jo ikke mulighed for at kunne poste i databasen, uden at refreshe.



Den tidligere "validation.js":

form.submit(function(){
        if(validateName() & validateEfternavn() & validateEmail() & validatePass1() & validatePass2())
            return true
        else
            return false;
    });




Den tidligere "opret.php":

                        <?php
                        if($_POST)
                        {
                        $name = $_POST['name'];
                        $efternavn = $_POST['efternavn'];
                        $email = $_POST['email'];
                        $pass2 = $_POST['pass2'];
                        $dato=date("d.m.Y");
                       
                        mysql_connect("xxxx","xxxx","xxxx");
                        mysql_select_db("xxxx");   
                       
                        mysql_query("INSERT INTO `brugere` ( `ID` , `dato`, `name` , `efternavn` , `email` , `pass2` , `status` )
                                    VALUES('', '$dato', '$name', '$efternavn', '$email', '$pass2', '2');")or die("Fejl 2 " . mysql_error());                                   
                                               
                        }else { }
                       
                        ?>
Avatar billede intenz Novice
11. marts 2011 - 18:39 #4
Hvis du ajax funktion driller, er du nødt til at se hvad den sender til serveren.

Prøv at find 'firebug' til firefox browseren. Så kan du se hvad der sendes og formegentlig hvad fejlen er.
Avatar billede olebole Juniormester
11. marts 2011 - 19:21 #5
D begynder naturligvis med at alert'e alt, hvad der kan alert'es. Begynd f.eks. med at tjekke, hvad di query streng indeholder:

var dataString = 'name='+ name + '&efternavn=' + efternavn + '&email=' + email + '&pass1=' + pass1 + '&pass2=' + pass2;

alert(dataString);


Dernæst udskriver du en log på serveren:


<?php
if($_POST) {
    $aTemp = array();
    foreach ($_POST as $key => $value) {
        $aTemp[] = $key." => ".$value;
    }
    $sStr = implode("\r\n", $aTemp);
    $fp = fopen("log.txt", "w");
    fwrite($fp, $sStr);
    fclose($fp);
   
    // Her fortsætter du din kode



- og hvis det ikke virker, må du ind i jQuery's indre kode og alert'e. Det bliver let et kamp-bøvlet job - men det er prisen for dovenskab  ;o)
Avatar billede madszeneli Nybegynder
14. marts 2011 - 09:27 #6
Jeg fik det til at fungere, men desværre uden validation - så koden er nok skrevet helt håbløst. Men jeg har prøvet at følge en anden guide, som selvfølgelig også har en fejl på en af linjerne:


//On Submitting

            form.submit(function(){
           
            var name = $("#name").val();
            var efternavn = $("#efternavn").val();
            var email = $("#email").val();
            var pass2 = $("#pass2").val();
            var dataString = 'name='+ name + '&efternavn=' + efternavn + '&email=' + email + '&pass1=' + pass1 + '&pass2=' + pass2;
                   
            if(validateName() & validateEfternavn() & validateEmail() & validatePass1() & validatePass2())
       
            {               
            $("#flash").show();
            $("#flash").fadeIn(400).html('Loading Comment...');
            $.ajax({
            type: "POST",
            url: "http://xxxxxx.dk/php/opret.php",
            data: dataString,
            cache: false,
            success: function(html){
            $("ol#update").append(html);
            $("ol#update li:last").fadeIn("slow");
            $("#flash").hide();
            }       
               
            else ************* Her får jeg en fej :-(
       
            });
            }return false;
            }); });

Jeg hentede Firebug, klikkede ind på min side og åbnede Firebug. Der stod bare <body></body> :-(

Alert gjorde at jeg fandt frem til et par fejl, men stadig ikke nok til at jeg både kunne køre både validation og ajax-submit i én og samme "function".

Jeg er en kæmpe amatør :D
Avatar billede madszeneli Nybegynder
15. marts 2011 - 14:49 #7
Hej alle sammen,

Jeg har fået styr på det - så vil gerne sige mange tak for hjælpen:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester