Bonjour,
Bon, mon problème est surement dans le php mais j'ai un petit doute avec le jquery ^^

Voilà, j'ai suivie plusieurs fois le tutoriel sur le json (j'avais oublier beaucoup de chose ^^)

Donc, j'utilise du POO pour faire mes requêtes derrière (code pas encore fini)

Voilà le JS :

/**
 * Created by ***** on 24/05/2015.
 */

$(function () {
    $('#Register').submit(function () {
        form = $(this);
        submit = $(this).find("input[type=submit]");
        submit.css({
            'background-image' : "url('./image/ajax-loader.gif')",
            'background-repeat' : 'no-repeat',
            'background-position' : 'center'
        });

        /*if(submit.prop("value") && typeof submit.attr("value") != 'undefined'){
            value = submit.attr("value");
        }
        else{
            value = 'Envoyer';
        }*/

        form.find(".error").empty();

        value = 'Envoyer';

        submit.attr("disabled", true);
        submit.attr("value", " ");
        mailAddress = $(this).find("input[name=email]").val();
        nickname = $(this).find("input[name=nickname]").val();
        password = $(this).find("input[name=password]").val();
        retype_password = $(this).find("input[name=retype_password]").val();

        url = $(this).attr("action");

        $.post(url,{mailAddress:mailAddress, nickname:nickname, password:password, retype_password:retype_password, ajax:true},function (data) {
            submit.attr('style', '').attr("value", value).attr("disabled", "false");
            if(data.Error == 1){
                form.find(".error").css("display", "");
                if(data.Type == "Password") {
                    form.find(".error").val(""+data.Message);
                }
            }
            //alert();

        },"json");

        return false;

    });
});

Voilà, le php qui appel le poo :

    require_once __DIR__.'/class/register.class.php';

    if(isset($_POST['email']) AND isset($_POST['nickname']) AND isset($_POST['password']) AND isset($_POST['retype_password'])){
        $register = new register($bdd);
        if(isset($_POST['ajax'])) { $ajax = true; } else { $ajax = false; }
        $register->setRegister($_POST['email'], $_POST['nickname'], $_POST['password'], $_POST['retype_password'], $ajax);
        //var_dump($registerResponce);
    }

Et le code POO :

<?php
/**
 * Created by PhpStorm.
 * User: *****
 * Date: 23/05/2015
 * Time: 12:33
 */

class register {

    private $bdd;
    private $result = array();

    /*
     * $result :
     *  Error :
     *      0 => Aucune erreur -> Inscription confirmer
     *      1 => Erreur produite -> Annuluntion de l'inscription
     */

    function __construct($bdd){
        $this->bdd = $bdd;
    }

    public function setRegister($email, $nickname, $password, $retype_password, $Ajax){
        if(empty($Ajax)) { $Ajax = null; }
        if(!empty($email) && !empty($nickname) && !empty($password) && !empty($retype_password)){
            if($password != $retype_password) {
                $this->result['Error'] = 1; // Erreur produite
                $this->result['Message'] = 'Les champs mot de passe ne correspondent pas !';
                $this->result['Type'] = 'Password';
                return returnRegister($this->result, $Ajax);
            }
        }
    }

    public function returnRegister($Result, $Ajax){
        if($Ajax == true){
            return json_encode($Result);
        }
        else
        {

        }
    }

}

Merci de votre aide.
Cordialement;

EDIT :

Par contre le fichier n'est pas à la racine...

index.php

| => JS

|| => Register.js

Et, je ne sais pas si il prend bien index.php....

5 réponses


remy76690
Auteur
Réponse acceptée

Bon, voilà après 12h de travail mon code est enfin fini :)
Je le donne quand même :)

        $.ajax({
            url: url,
            type: "POST",
            data: {email:mailAddress, nickname:nickname, password:password, retype_password:retype_password, ajax:true},
            dataType: 'json' // JSON
        }).done(function (data) {
            submit.attr('style', '').attr("value", value).attr("disabled", false);
            if(data.Error == 1){
                if(data.Type == "Field"){
                    form.find(".error").css("display", "");
                    form.find(".error").append(data.Message);
                }
                //form.find(".error").css("display", "");
                if(data.Type == "Password") {
                    //form.find(".error").val(""+data.Message);
                }
            }
            console.log(data);
            //alert();

        });

Php :

$access = 1;
$action = 1;
require_once __DIR__.'/../include/globalInclude.php';

require_once __DIR__ . '/../include/class/register.class.php';

if(isset($_POST['email']) AND isset($_POST['nickname']) AND isset($_POST['password']) AND isset($_POST['retype_password'])){
    $register = new Register($bdd);
    if(isset($_POST['ajax'])) { $ajax = true;
        echo $register->setRegister($_POST['email'], $_POST['nickname'], $_POST['password'], $_POST['retype_password'], $ajax);
    } else { $ajax = false; }
    //var_dump($registerResponce);
}

Et class :

class Register {

    private $bdd;
    private $result = array();

    /*
     * $result :
     *  Error :
     *      0 => Aucune erreur -> Inscription confirmer
     *      1 => Erreur produite -> Annuluntion de l'inscription
     */

    function __construct($bdd){
        $this->bdd = $bdd;
    }

    public function setRegister($email, $nickname, $password, $retype_password, $Ajax){
        if(empty($Ajax)) { $Ajax = null; }
        if(!empty($email) && !empty($nickname) && !empty($password) && !empty($retype_password)){
            if($password != $retype_password) {
                $this->result['Error'] = 1; // Erreur produite
                $this->result['Message'] = 'Les champs mot de passe ne correspondent pas !';
                $this->result['Type'] = 'Password';
               //echo 'test';
            }
        }
        else
        {
            // Champ vide
            $this->result['Error'] = 1;
            $this->result['Message'] = 'Les champs ne sont pas complétés !';
            $this->result['Type'] = 'Field';

            return $this->returnRegister($this->result, $Ajax);
        }
    }

    public function returnRegister($Result, $Ajax){
        if($Ajax == true){
            return json_encode($Result);
        }
        else
        {

        }
    }

}

Bon après avoir regarder un peu plus, je me suis aperçu que pour moi le code ajax ne fonctionne pas comme dans la vidéo.
Je dois faire un done() en plus pour qu'il fonctionne sinon rien...

Explique un peu quel est le problème parce que là tu ne fais que balancer du code mais sans nous dire où chercher en faite ^^
Un message d'erreur ?

Voilà, le bute et de faire une inscription par ajax avec json.
Sauf que le code écrit dans la vidéo sur le json (partie jquery : Page 4 ou 5 (Je ne me souvient plus ...) )
La requetes ajax est ecrit comem dans mon premier poste dont pour moi, rien ne se passe (pas de retour ni de passage ...)
Et comme, je me suis lancer à faire des sites en poo, j'ai donc suivie une partie du tuto (dans le tuto, ce n'est pas en poo)
Ensuite, je voulais que sa retourne sur la même page sauf que sur la même page, sa fait afficher tout le code (html)
J'ai donc, fait dans une page différente.
Et maintenant, je teste pour récuperer au moins une valeur.
Actuellement, je bloque sur une condition que je n'arrive pas à passer même en post.
JS :

        $.post(url,{mailAddress:mailAddress, nickname:nickname, password:password, retype_password:retype_password, ajax:true}).done(function (data) {
            submit.attr('style', '').attr("value", value).attr("disabled", false);
            /*if(data.Error == 1){
                form.find(".error").css("display", "");
                if(data.Type == "Password") {
                    form.find(".error").val(""+data.Message);
                }
            }*/
            console.log(data);
            //alert();

        },"json");

Et php (fichier non poo):

$access = 1;
$action = 1;
require_once __DIR__.'/../include/globalInclude.php';

require_once __DIR__ . '/../include/class/register.class.php';

if(isset($_POST['email']) AND isset($_POST['nickname']) AND isset($_POST['password']) AND isset($_POST['retype_password'])){
    echo 'e';
    $register = new Register($bdd);
    if(isset($_POST['ajax'])) { $ajax = true; } else { $ajax = false; }
    echo $register->setRegister($_POST['email'], $_POST['nickname'], $_POST['password'], $_POST['retype_password'], $ajax);
    //var_dump($registerResponce);
}

Et là, le fichier avec le code poo :

class Register {

    private $bdd;
    private $result = array();

    /*
     * $result :
     *  Error :
     *      0 => Aucune erreur -> Inscription confirmer
     *      1 => Erreur produite -> Annuluntion de l'inscription
     */

    function __construct($bdd){
        $this->bdd = $bdd;
    }

    public function setRegister($email, $nickname, $password, $retype_password, $Ajax){
        if(empty($Ajax)) { $Ajax = null; }
        if(!empty($email) && !empty($nickname) && !empty($password) && !empty($retype_password)){
            if($password != $retype_password) {
                $this->result['Error'] = 1; // Erreur produite
                $this->result['Message'] = 'Les champs mot de passe ne correspondent pas !';
                $this->result['Type'] = 'Password';
                return returnRegister($this->result, $Ajax);
            }
        }
    }

    public function returnRegister($Result, $Ajax){
        if($Ajax == true){
            return json_encode($Result);
        }
        else
        {

        }
    }

}

Sauf, que là, je n'arrive même pas avoir le echo "e" dans le php normal.

Donc, je cherche encore ^^
Mais, j'avance doucement ^^

EDIT : Je viens de trouver un problème, que mes POST n’était pas au même nom...

Maintenant, je suis sur le poo...
J'ai une erreur au moment, que je vérifie par une fonction du Ajax

Bon voilà,
J'arrive vers la fin, à présent, je récupere des informations, sauf que je n'arrive pas à selection les parties du tableau, exemple data.Error
Ceci vas aussitot me renvoyer undefined.
Communication avec la class :

$access = 1;
$action = 1;
require_once __DIR__.'/../include/globalInclude.php';

require_once __DIR__ . '/../include/class/register.class.php';

if(isset($_POST['email']) AND isset($_POST['nickname']) AND isset($_POST['password']) AND isset($_POST['retype_password'])){
    $register = new Register($bdd);
    if(isset($_POST['ajax'])) { $ajax = true;
        echo json_encode($register->setRegister($_POST['email'], $_POST['nickname'], $_POST['password'], $_POST['retype_password'], $ajax));
    } else { $ajax = false; }
    //var_dump($registerResponce);
}

La class :

class Register {

    private $bdd;
    private $result = array();

    /*
     * $result :
     *  Error :
     *      0 => Aucune erreur -> Inscription confirmer
     *      1 => Erreur produite -> Annuluntion de l'inscription
     */

    function __construct($bdd){
        $this->bdd = $bdd;
    }

    public function setRegister($email, $nickname, $password, $retype_password, $Ajax){
        if(empty($Ajax)) { $Ajax = null; }
        if(!empty($email) && !empty($nickname) && !empty($password) && !empty($retype_password)){
            if($password != $retype_password) {
                $this->result['Error'] = 1; // Erreur produite
                $this->result['Message'] = 'Les champs mot de passe ne correspondent pas !';
                $this->result['Type'] = 'Password';
               //echo 'test';
            }
        }
        else
        {
            // Champ vide
            $this->result['Error'] = 1;
            $this->result['Message'] = 'Les champs ne sont pas complétés !';
            $this->result['Type'] = 'Field';
            return $this->returnRegister($this->result, $Ajax);
        }
    }

    public function returnRegister($Result, $Ajax){
        if($Ajax == true){
            return json_encode($Result);
        }
        else
        {

        }
    }

}

Et l'ajax :

$.post(url,{email:mailAddress, nickname:nickname, password:password, retype_password:retype_password, ajax:true}).done(function (data) {
            submit.attr('style', '').attr("value", value).attr("disabled", false);
            if(data.Error == 1){
                console.log('Erreur');
                //form.find(".error").css("display", "");
                if(data.Type == "Password") {
                    //form.find(".error").val(""+data.Message);
                }
            }
            console.log(data.Error);
            //alert();

        },"json");