begin process at 2012 05 29 14:32:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

Framework

 > 

Ajax

 > 

JQUERY et json_encode qui encode une fois sur 2


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

JQUERY et json_encode qui encode une fois sur 2

samedi 26 novembre 2011 à 05:56:44 | JQUERY et json_encode qui encode une fois sur 2

BBFUNK01

Hello,

voici mon problème :

pour un de mes sites je suis en train de mettre en place un module de notification qui avertit l'utilisateur des messages non lus qu'il a reçu.
J'effectue donc une requête SQL en passant par un script $ajax qui s'exécute toutes les 7 secondes, cela sollicite un script PHP dans lequel je remplis un array que j'encode avec json_encode pour la récupération dans mon fichier.js.

Le problème :

bizarrement sur certaines pages mon script js décode bien l'array et m'affiche les données correctement, mais sur d'autres pages le décodage ne s'effectue pas correctement et les données ne s'affichent pas comme elles devraient.

Voici le résultat de mon alert(data); sur les pages qui fonctionnent :

1 nouveau message,0 nouveau message photo,0 proposition de Contrat,1 demande d'album

Et voici le résultat de mon alert(data); sur les pages qui ne fonctionnent pas :

["1 nouveau message","0 nouveau message photo","0 proposition de Contrat","1 demande d'album"]

Donc sur les pages qui ne fonctionnent pas le décodage ne supprime pas les crochets ni les guillemets...

Voici mon script js qui sollicite le script PHP :

Code Javascript :
$(document).ready(function() {
	
$('#notif').hide();

$('.close_notif').click(function(){
	$('#notif').fadeOut(150);
});

setInterval(function(){
	
	$.ajax({
		type: "GET",
		url: "the_news.php",
		success:function(data){ 
			if(data != "0"){
				
				alert(data);
																		
				$.each(data, function(key, value) {
					
					if(key == 0){
						if(value == "0 nouveau message"){
							$('#note1').html('<img src="images/site/light2.png" class="light"/>'+value);
						}else{
							$('#note1').html('<img src="images/site/light.png" class="light"/><a href="mes-messages.php" class="Notif">'+value+'</a>');
						}
					}else if(key == 1){
						if(value == "0 nouveau message photo"){
							$('#note2').html('<img src="images/site/light2.png" class="light"/>'+value);
						}else{
							$('#note2').html('<img src="images/site/light.png" class="light"/><a href="mes-messages-photo.php" class="Notif">'+value+'</a>');
						}
					}else if(key == 2){
						if(value == "0 proposition de Contrat Sexe"){
							$('#note3').html('<img src="images/site/light2.png" class="light"/>'+value);
						}else{
							$('#note3').html('<img src="images/site/light.png" class="light"/><a href="mes-contrats.php" class="Notif">'+value+'</a>');
						}
					}else if(key == 3){
						if(value == "0 demande d'album"){
							$('#note4').html('<img src="images/site/light2.png" class="light"/>'+value);
						}else{
							$('#note4').html('<img src="images/site/light.png" class="light"/><a href="mes-albums.php" class="Notif">'+value+'</a>');
						}
					}
				
       			});
			
				$('#notif').fadeIn(250);
				
			}else if(data == "0"){
						
				alert("rien à déclarer");
  			}
		}
	});	
	
},7000);

	
});


Et voici mon script PHP sollicité pour la requête :

Code PHP :
<?php

session_start();

try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd = new PDO('mysql:host=localhost;bdd', 'root', 'root', $pdo_options);
	
	$analyseMess = $bdd->prepare('SELECT id FROM message WHERE id = '.$_SESSION['id'].' AND statut = 0');
	$analyseMess->execute();
	$ResMess = $analyseMess->rowCount();
		
	if($ResMess == 0){
		$Rmess = $ResMess.' nouveau message';
		$tabNews[0] = $Rmess;
		$ind1 = 0;
	}else if($ResMess == 1){
		$Rmess = $ResMess.' nouveau message';
		$tabNews[0] = $Rmess;
		$ind1 = 1;
	}else if($ResMess > 1){
		$Rmess = $ResMess.' nouveaux messages';
		$tabNews[0] = $Rmess;
		$ind1 = 1;
	}
	
	$analyseMessP = $bdd->prepare('SELECT id FROM message2 WHERE id = '.$_SESSION['id'].' AND statut = 0');
	$analyseMessP->execute();
	$ResMessP = $analyseMessP->rowCount();
		
	if($ResMessP == 0){
		$RmessP = $ResMessP.' nouveau message photo';
		$tabNews[1] = $RmessP;
		$ind2 = 0;
	}else if($ResMessP == 1){
		$RmessP = $ResMessP.' nouveau message photo';
		$tabNews[1] = $RmessP;
		$ind2 = 1;
	}else if($ResMessP > 1){
		$RmessP = $ResMessP.' nouveaux messages photos';
		$tabNews[1] = $RmessP;
		$ind2 = 1;
	}
	
	$analyseCT = $bdd->prepare('SELECT id FROM contrat WHERE id = '.$_SESSION['id'].' AND statut = 0');
	$analyseCT->execute();
	$ResCT = $analyseCT->rowCount();
		
	if($ResCT == 0){
		$Rct = $ResCT.' proposition de Contrat';
		$tabNews[2] = $Rct;
		$ind3 = 0;
	}else if($ResCT == 1){
		$Rct = $ResCT.' proposition de Contrat';
		$tabNews[2] = $Rct;
		$ind3 = 1;
	}else if($ResCT > 1){
		$Rct = $ResCT.' propositions de Contrat';
		$tabNews[2] = $Rct;
		$ind3 = 1;
	}
	
	$analyseAL = $bdd->prepare('SELECT id FROM album WHERE id = '.$_SESSION['id'].' AND statut = 0');
	$analyseAL->execute();
	$ResAL = $analyseAL->rowCount();
		
	if($ResAL == 0){
		$Ral = $ResAL.' demande d\'album';
		$tabNews[3] = $Ral;
		$ind4 = 0;
	}else if($ResAL == 1){
		$Ral = $ResAL.' demande d\'album';
		$tabNews[3] = $Ral;
		$ind4 = 1;
	}else if($ResCT > 1){
		$Ral = $ResAL.' demandes d\'album';
		$tabNews[3] = $Ral;
		$ind4 = 1;
	}
	
}
	catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

$INDIC = $ind1 + $ind2 + $ind3 + $ind4;

if($INDIC == 0){
	
	echo "0";

}else if($INDIC > 0){
	
	header('Content-type: application/json');
	echo json_encode($tabNews);
	
}

?>


Bref, je ne comprends pas d'où peut venir le souci : le script chargé est le même sur chaque page et il n'y a pas de raison que ça marche sur certaines et pas sur d'autres.

Si quelqu'un a déjà rencontré ce genre de problème je veux bien un éclaircissement car là je bloque considérablement.

Merci ;),

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono
samedi 26 novembre 2011 à 06:36:36 | Re : JQUERY et json_encode qui encode une fois sur 2

BBFUNK01

Réponse acceptée !
Bon et bien j'ai finalement trouvé : il suffit de préciser le datatype dans l'appel $ajax et ça marche :

Code Javascript :
$.ajax({
		type: "GET",
		dataType: 'json',
		url: "the_news.php",
		success:function(data){


BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono


Cette discussion est classée dans : id, value, if, else, tabnews


Répondre à ce message

Sujets en rapport avec ce message

requete sql [ par 27 ] salut,est-il possible d'exécuter une requete mySql dans un script avec un petit exemple svp.Comme ceci par exemple : function majChamp(){              editeur menu [ par rosalin83 ] bonsoir,je vx creer un editeur de menu avec javascript voilà ce que j'ai fait mais j'ai trouvé des dificultés au niveau de l'etape suivante plus préci controler plusieurs champs d'un formulaire [ par attentio ] Bonjour,j'ai une fonction qui verifie tous les champs d'un formulaire qui ne marche pasje ne comprends vraiment pas pourquoi ?si je mets   if(document CAMERA IP [ par ermaub ] Bonjour,Je ne suis ni programmateur, ni pratiquant je n'oserais me qualifier comme debutant, je connais le principe de la programation, les différents Mettre une musique en fonction de l'heure [ par aloyse ] Bonjour à tous,Je vous contacte car j'ai un problème, voilà, j'utilise un joomla site pour mon portfolio, ainsi qu'un template pré-défini. Ce template Affiche nombre [ par jumano ] Bonjour,J'effectue une petite fonction en js me permettant d'effectuer certain calcul en fonction de "radio" en position check.Je récupère ensuite une Probleme dans une fonction de verification sous condition if / else if [ par djmath56 ] bonjour,J'ai un problème dans une fonction qui met sert à vérifier les champs d'un formulaire ! J'ai reperer l'endroit où sa coince mais je ne vois pa input radio [ par raurau ] BonjourJ'essaie de faire un tableau pour le choix entre deux menus1 ou 2 bouton radio                                        Bouton choix Problème de récupération de données avec AJAX [ par Diablotine666 ] Bonjour, Je souhaite récupérer des données contenues dans une base de données en utilisant de l'ajax afin de ne pas avoir à rechercher ma page. Mon co Mozilla Firefox [ par xavier230573 ] bonjour voila j ai ce javascript qui fonctionne avec php et une base de donnée .il fonctionne tres bien .j etais content , mais, il y a un mais .j ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales