Bonjour tout le monde,
Tout d'abords, je tiens à vous dire que je débute totalement dans le JS donc l'ajax par la même occasion.
Mon projet est en PHP avec comme Framework Symfony2.
J'aimerais tout simplement faire une vérification en base si lors de la création d'un compte, que le pseudo n'existe pas déjà.
Mon twig est comme ceci :
mon script :
et dans mon contrôleur, j'ai ceci :
Il me renvoi bien la bonne réponse :
HTTP/1.0 200 OK
Cache-Control: no-cache
Date: Wed, 14 May 2014 14:41:02 GMT
"OK"
ou :
HTTP/1.0 200 OK
Cache-Control: no-cache
Date: Wed, 14 May 2014 14:55:27 GMT
"<font color=\"red\">Le pseudo <STRONG>Dragoos<\/STRONG> est d\u00e9j\u00e0 utilis\u00e9.<\/font>"
Mais cela ne change rien sur mon affichage :
mon
Merci à vous
Modifié par Dragoos (15 May 2014 - 20:52)
Tout d'abords, je tiens à vous dire que je débute totalement dans le JS donc l'ajax par la même occasion.
Mon projet est en PHP avec comme Framework Symfony2.
J'aimerais tout simplement faire une vérification en base si lors de la création d'un compte, que le pseudo n'existe pas déjà.
Mon twig est comme ceci :
{% extends "MainBundle:Layout:layout.html.twig" %}
{% block title %} {{ titre ~ ' - ' ~ parent() }} {% endblock %}
{% block js %}
{{ parent() }}
<script src="{{ asset('js/connexion.js') }}" type="text/javascript"></script>
{% endblock %}
{% block contenu %}
<h2>{{ titre }}</h2>
<div id="formulaireAjoutCompte">
{{ form_start(oForm, {'attr': {'class': 'form-horizontal', 'role': 'form'} }) }}
{{ form_row(oForm.username) }}
{{ form_row(oForm.plainPassword) }}
{{ form_row(oForm.email) }}
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
<input type="submit" value="Valider" class="btn btn-primary" id="btnValiderAjoutCompte"/>
<a href="{{ path('accueil') }}" class="btn btn-danger" role="button">Annuler</a>
</div>
</div>
{{ form_end(oForm) }}
</div>
{% endblock %}
mon script :
$(document).ready(function() {
$("#compte_username").change(function() {
var usr = $("#compte_username").val();
if (usr.length >= 4)
{
$("#status").html('<img src="../../images/loader.gif" align="absmiddle"> Check la validité...');
$.ajax({
type: "POST",
url: "check",
data: "username=" + usr,
success: function(msg) {
alert('tata');
$("#status").ajaxComplete(function(event, request, settings) {
if (msg == 'OK')
{
$("#compte_username").addClass("object_ok");
$(this).html(' <img src="../../images/tick.gif" align="absmiddle">');
}
else
{
$("#compte_username").addClass("object_error");
$(this).html(msg);
}
});
}
});
}
else
{
$("#status").html('<font color="red">Le pseudo doit être suppérieur à <strong>4</strong> caractères.</font>');
$("#compte_username").addClass("object_error");
}
});
});
et dans mon contrôleur, j'ai ceci :
/**
* @Route("/check", name="check")
* Return a ajax response
*/
public function checkAction() {
if (isSet($_POST['username'])) {
$oUtilisateurRepository = $this->getDoctrine()->getManager()->getRepository('MainBundle:Utilisateur');
/* @var $oUtilisateurRepository UtilisateurRepository */
$toUtilisateur = $oUtilisateurRepository->findAll();
$username = $_POST['username'];
$usernames = array();
$i = 0;
/* @var $usernames array */
foreach ($toUtilisateur as $oUtilisateur) {
$usernames[$i] = $oUtilisateur->getUsername();
$i++;
}
$retour = NULL;
if (in_array($username, $usernames)) {
$retour = '<font color="red">Le pseudo <STRONG>' . $username . '</STRONG> est déjà utilisé.</font>';
} else {
$retour = 'OK';
}
}
$response = new Response(json_encode($retour));
return new Response($response, 200, array('Content-Type' => 'application/json'));
}
Il me renvoi bien la bonne réponse :
HTTP/1.0 200 OK
Cache-Control: no-cache
Date: Wed, 14 May 2014 14:41:02 GMT
"OK"
ou :
HTTP/1.0 200 OK
Cache-Control: no-cache
Date: Wed, 14 May 2014 14:55:27 GMT
"<font color=\"red\">Le pseudo <STRONG>Dragoos<\/STRONG> est d\u00e9j\u00e0 utilis\u00e9.<\/font>"
Mais cela ne change rien sur mon affichage :
mon
alert('tata');
qui se trouve à la ligne 12 de mon JavaScript ne s'affiche jamaisMerci à vous

Modifié par Dragoos (15 May 2014 - 20:52)