Avatar billede dondy-kurt Nybegynder
22. februar 2011 - 08:46 Der er 4 kommentarer og
1 løsning

jQuery AJAX kald til php

Nu har jeg bøvlet med dette i jeg ved ikke hvor lang tid.

Jeg har en side hvor man kan oprette en bruger. Der der bliver klikket på "submit", kalder den dette jQuery nedenfor. Som kalder til en php fil der hedder process.php, og sender nogle variabler med. Mit problem er bare at jeg ikke kan få den til at kalde "Error"/"false".
Jeg laver et tjek i mit php om brugernavnet allerede findes, og hvis det gør det så siger den "return false". Men mit jQuery opfatter det åbenbart som true, og sriver "succes". Men den laver dog ikke en ny bruger. Den kalder bare det forkerte.


jQuery AJAX
------------------------------------->
<script type="text/javascript">
    $(document).ready(function() {
       
        //if submit button is clicked
        $("#submit").click(function () {       
           
            //Get the data from all the fields
            var name = $("input[name=user_username]");
            var email = $("input[name=user_email]");
           
            if (name.val()=="") {
                name.addClass("hightlight");
                console.log("NAME FEJL");
                return false;
            } else { name.removeClass("hightlight"); }
           
            if (email.val()=="") {
                email.addClass("hightlight");
                console.log("EMAIL FEJL");
                return false;
            } else { email.removeClass("hightlight"); }
           
            //show the loading sign
            $(".loading").show();
       
            $.ajax({
              url: "process.php",
              async: false,
              data: "name="+name.val()+"&email="+email.val(),
              success: function() { alert("Succes"); },
              error: function() { alert("Error"); }
            });
           
            //cancel the submit button default behaviours
            return false;
        });
    });
</script>




process.php
-------------------------------->
<?php
    include("db.php");

    //Sætter vairablerne
    $user_username = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
    $user_email = ($_GET['email']) ? $_GET['email'] : $_POST['email'];
    $user_password_first = "ajaxtest";
    $user_password_secound = "ajaxtest";
    $user_firstname = "ajaxtest";
    $user_lastname = "ajaxtest";
    $user_role = "ajaxtest";
    $user_theme = "ajaxtest";
    $user_date = date('d.m.Y');
   
    //Tjekker om brugeren findes
    $run = mysql_query('SELECT * FROM users WHERE username = "' . $user_username . '"');
    if(mysql_num_rows($run) <= 0) {
               
        mysql_query("INSERT INTO users (username, password, firstname, lastname, email, admin, theme, date)
        VALUES ('$user_username', '$user_password_secound', '$user_firstname','$user_lastname', '$user_email', '$user_role', '$user_theme', '$user_date')")
        or die(mysql_error());
       
        header("location:user-new.php");
       
        return true;   
    }
   
    if(mysql_num_rows($run) > 0) {
        return false;
    }
   
    return false;

?>
Avatar billede mcb2001 Nybegynder
22. februar 2011 - 09:01 #1
Det er basalt set fordi du bruger følgende kode:
$.ajax({
              url: "process.php",
              async: false,
              data: "name="+name.val()+"&email="+email.val(),
              success: function() { alert("Succes"); },
              error: function() { alert("Error"); }
            });


Den siger at hvis der er succes (du får et svar) så skal du lave Succes - hvis du ikke kunne forbinde til serveren, fik en timeout eller lignende, så skal du du melde Error.

Det du skal gøre er at kigge på det svar du får retur, og så tage stilling ud fra det.

succes: function(){BEHANDEL DATA HER OG TAG STILLING TIL OM DET ER OK}
error: function() { alert("der kunne ikke forbindes til serveren"}
Avatar billede dondy-kurt Nybegynder
22. februar 2011 - 09:09 #2
Okay jeg takker :)

Kan jeg evt gøre det ved at sende return 1 eller return 0, og så i js skrive:
succes: function(){
  if(return == 0)
    Gøre noget ved error
  else
    Gøre det den skal når det er rigtigt

??
Avatar billede tjens Nybegynder
22. februar 2011 - 10:11 #3
#2 Nej, et Ajax kald henter 'noget' fra din webserver.
Ved hjælp af en header i starten af din process.php fortæller du hvad der sendes.
F.eks. HTML, XML, JSON, text og mange andre.

Hvis du skifter dine returns ud med echo 'OK' og echo 'errormessage', kan du teste på om svaret var = 'OK', og ellers vise svaret som fejlmeddelelse.

I dette tilfælde skal du sætte content-type til text.

Jeg er ikke vant til at bruge jQuery, så jeg ved ikke lige hvad tekst-feltet hedder i javascriptet.
Så find beskrivelsen til din jQuery-version.
Avatar billede dondy-kurt Nybegynder
22. februar 2011 - 15:07 #4
Tak skal i have.... Så kom jeg endelig videre :)
Avatar billede mcb2001 Nybegynder
22. februar 2011 - 17:07 #5
velbekommen
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