Codeigniter - Aucun résultat après l'envoi de données jQuery

Je travaille sur un formulaire d'inscription en utilisant AJAX et Codeigniter PHP framework de jQuery, mais le codeigniter n'a pas d'importance, si vous voyez bizarre echo form_open (); ou d'autres choses bizarres, ne pas s'inquiéter, ils sont tous codeigniter.

D'accord, voici mon problème avec le code. J'ai essayé un simple post en utilisant jQuery ci-dessous (dans le code PHP tout le reste est omis et ajouté un simple écho 'bonjour, monde!'; Fonction, et ça marche/me donne un bonjour, monde!):

 $.post( 'ajax_signup_username' ,function(result){

                $(span_error).html(result);

            } );

Mais quand j'y ai passé un post, ça ne marche pas (ne donne aucun résultat, notez que j'utilise le code PHP complet écrit ci-dessous >):

$.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){

                $(span_error).html(result);

            } );

J'ai essayé de chercher SO, mais les solutions fournies n'ont pas résolu cela. Une idée de ce qui ne va pas?

Voici les codes complets:

Voici le code html:

<body>

<?php $attr = array( 'onsubmit' => 'return final_val()' ); echo form_open('formValidation/signUp',$attr); ?>



Username: <input type="text" onBlur="username_val()" value="<?php echo set_value('username')?>" name="username" maxlength="50" /><?php echo form_error('username'); ?>


Email: <input type="text" onBlur="email_val()" value="<?php echo set_value('email')?>" name="email" maxlength="50" /><?php echo form_error('email'); ?>


Password: <input type="password" onBlur="pass_val()" value="<?php echo set_value('pass')?>" name="pass" maxlength="50" autocomplete="off"/><?php echo form_error('pass'); ?>


Password Confirm: <input type="password" onBlur="pass_val()" value="<?php echo set_value('passconf')?>" name="passconf" maxlength="50" autocomplete="off" /><?php echo form_error('passconf'); ?>


<input type="submit" value="SIGN UP!" name="signup"/>

</form> </body>

Voici le code php:

function ajax_signup_username(){

    $username = $_POST['php_username_error'];

    $uniqueUn = $this->db->prepare("SELECT * FROM iowfiwefwmember WHERE username=:username");

    $uniqueUn->bindParam(':username', $username);

    $uniqueUn->execute();

    $count1 = $uniqueUn->fetch();

    if( $count1 == FALSE ){

        echo 'USERNAME AVAILABLE!';

    }else{

        echo 'USERNAME IS ALREADY USED!';

    }

}

Voici le code javascript:

function username_val(){

        $.ajaxSetup({ cache : false });

            username_value = $("input[name='username']").val();

            span_error = "span[name='username_error']";

            //$(span_error).load('ajax_signup_username', {php_username_error:username_value}); <-- also doesn't work [ $.ajaxSetup() is set to POST ]

            $.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){

                $(span_error).html(result);

            } );

    }
0
Avez-vous une erreur JavaScript? Que se passe-t-il lorsque vous envoyez directement une demande de publication à l'URL?
ajouté l'auteur Explosion Pills, source
@PHPForLife naviguant dans le navigateur ne suffit pas .. vous devez faire la même demande de publication en utilisant le navigateur ou un autre agent utilisateur.
ajouté l'auteur Explosion Pills, source
@PHPForLife un formulaire?
ajouté l'auteur Explosion Pills, source
@PHPForLife si cela peut être fait en ajax cela peut être fait d'une autre manière. Vous allez devoir comprendre cela, sinon vous ne pourrez jamais tester les requêtes ajax.
ajouté l'auteur Explosion Pills, source
Aussi s'il vous plaît ne dérange pas les codes PDO, le point est que, après l'envoi d'une donnée de poste dans le paramètre, cela ne fonctionne pas.
ajouté l'auteur PHP For Life, source
@ExplosionPills La barre d'outils du développeur Web dans firefox m'a donné une erreur POST Server, mais j'ai essayé de naviguer dans le code du navigateur et il existe.
ajouté l'auteur PHP For Life, source
@vansimke Oui, c'est. Lorsque vous naviguez dans noreferrer"> localhost/foo/bar/ajax_signup_username dans le navigateur, il existe.
ajouté l'auteur PHP For Life, source
@ExplosionPills Comment puis-je faire cela?
ajouté l'auteur PHP For Life, source
@ExplosionPills form_open() génère automatiquement une méthode post dans le formulaire
ajouté l'auteur PHP For Life, source
Toujours pas de chance non plus
ajouté l'auteur PHP For Life, source
ExplosionPills & vansimke - Désolé de perdre votre temps à ce sujet, il s'avère que c'est un problème de codeigniter, merci quand même! À votre santé! :RÉ
ajouté l'auteur PHP For Life, source
comment acheminez-vous l'url 'ajax_signup_username' à la fonction? Est-ce un peu de magie CodeIgniter?
ajouté l'auteur vansimke, source
@PHPForLife Si FireFox est en train de se plaindre, il y a apparemment quelque chose qui ne va pas dans l'url. Essayez de coder en dur l'URL complète (localhost/foo/bar/...) dans l'appel $ .post et de voir si cela correspond à ce que vous voulez.
ajouté l'auteur vansimke, source

1 Réponses

Après de longues heures à faire des bêtises devant mon ordinateur portable, j'ai découvert que ce EST un problème de codeigniter, j'ai activé la protection CSRF qui a causé le problème. Après avoir désactivé la fonction CSRF, cela fonctionne très bien, assurez-vous de ne pas répéter la même erreur, les jeunes! À votre santé! :RÉ

0
ajouté
Cependant, je ne recommanderais pas CodeIgniter pour les nouveaux développements. Depuis qu'Ellislab a décidé de ne plus le supporter, il a fallu près de 2 ans pour que certaines corrections de bugs soient réalisées de la version 2.1.3 à la version 2.1.4. Mais oui, pour moi, les fonctionnalités CSRF ont également causé des problèmes.
ajouté l'auteur Mauricio A. Cinelli, source