Question jquery.post

astro-mania
Invité n'ayant pas de compte PHPfrance

24 févr. 2014, 00:17

Bonjour a vous tous cher développeurs,

je viens a vous, pour voir si vous seriez m'aider sur un petit problème qui traine de plus en plus longtemps dans ma liste de tache a faire pour mon propre site.

Voila ou j'en suis au niveau du code html.
<a title="Messages" href="game.php?page=messages">
<span class="mesages"></span>
<span id="new_email"  style="display:none;"></span>
</a>
voici ou j'en suis au niveau du javascript.
[javascript]function AJAX()
{
jQuery.post("./json.php", {'ataks': ataks, 'spio': spio, 'unic': unic, 'rakets': rakets, 'ajax': 1}, function(data)
{
var indicators = document.getElementById('indicators');
var newemail = document.getElementById('new_email');
var beepataks = document.getElementById('beepataks');
if(data.ICOFLEET)
{
indicators.innerHTML = data.ICOFLEET;
if(data.NEWMSG != "")
{
$('#new_email').show();
newemail.innerHTML = data.NEWMSG;
}
else
{
$('#new_email').hide();
}
if(data.SOUNDATAKS){
beepataks.play();
}
ataks = data.ataks;
spio = data.spio;
unic = data.unic;
rakets = data.rakets;
}
}, "json"
);
}[/javascript]

et pour la parti PHP, je n'ai rien du tout car je ne sais pas du tout par quoi commencer, le but du projet étant que quand un utilisateur reçoit un nouveau message, que la partie newmail et montrer automatiquement sans être forcer de faire un refresh de la page. si une personne assez aimable pourrai me donner une direction a suivre pour que je puisse m'en sortir avec ce problème, je ne demande pas de réponse toute faite. juste une aide assez précise et complète.

Merci d'avance

Eléphant du PHP | 83 Messages

24 févr. 2014, 00:57

Salut,

Bon, je fait quelque chose qui peut aider, voila mon code JQuery :

[javascript]

$(document).ready(function($) {

Check();

function Check(){

$.ajax({
url : "unscript.php",
type: "POST",
data : Data,
success: function(resp)
{
//resp- réponse du serveur : je suppose soit 1 soit 0 (1=nouveau mail, o=pas de nouveau mail)
if(resp==1){
$("#new_email").show();
}
}
});

setTimeout(Check, 5000);
}


});

[/javascript]

Ce code contacte le fichier "unscript.php" chaque 5secondes ce fichier doit soit retourné 1 s'il y a un nouveau émail soit 0 s'il n'y a pas.
et si le résultat de retour est 1 il affiche l’élément dont l'id est "new_email".

Voila une approche simple est possible qui utilise JQuery.

Bon Codage

DarkLord
Invité n'ayant pas de compte PHPfrance

26 févr. 2014, 18:07

Bonjour Libertux, merci pour votre réponse, celle-ci ma fortement éclairer au niveau du js ceci dis cote PHP ça ne ma pas avancer, voici le code qui devrai donner la réponse oui ou non par rapport a ma demande principale.

define('MODE', 'CRON');
define('ROOT_PATH', str_replace('\\', '/',dirname(__FILE__)).'/');
set_include_path(ROOT_PATH);
require('includes/common.php');


$getch = $GLOBALS['DATABASE']->query("SELECT COUNT(*) FROM `uni1_messages` as where `message_unread` = '1' ");
if($GLOBALS['DATABASE']->numRows($getch) == 0){
	echo json_encode(array('success' => false));
}else{
	//Reception des nouveau message

	while($x = $GLOBALS['DATABASE']->fetch_array($getch)){
		$resp = $x;
		
	}
	echo json_encode(array('success'=>true,'data'=>$resp));
}
tu pourrai me coordonner un peu sur celle ci. le problème étant surtout de comment envoyer la réponse au javascript..

DarkLord
Invité n'ayant pas de compte PHPfrance

26 févr. 2014, 18:09

Au cas ou je suis Astro-Mania, je me suis tromper de nom d'utilisateur

Petit nouveau ! | 3 Messages

26 févr. 2014, 18:20

bon j'ai décider de créer un compte car je viens de remarquer que j’avais une erreur dans le code php.
define('MODE', 'CRON');
define('ROOT_PATH', str_replace('\\', '/',dirname(__FILE__)).'/');
set_include_path(ROOT_PATH);
require('includes/common.php');


$getch = $GLOBALS['DATABASE']->query("SELECT COUNT(*) FROM `uni1_messages` where `message_owner` = '".$GLOBALS['DATABASE']->sql_escape($SESSION->returnUid())."' AND `message_unread` = '1' ");
if($GLOBALS['DATABASE']->numRows($getch) == 0){
        echo json_encode(array('success' => false));
}else{
        //Reception des nouveau message

        while($x = $GLOBALS['DATABASE']->fetch_array($getch)){
                $resp = $x;
               
        }
        echo json_encode(array('success'=>true,'data'=>$resp));
}

Eléphant du PHP | 83 Messages

27 févr. 2014, 01:02

Salut mon ami,

bon, d'après ton PHP tu retourne soit success = true soit false donc ton ajax devient :



[javascript]$.ajax({
url : "unscript.php",
type: "POST",
data : Data,
success: function(data) {
//ici tu as le data qui est le "'data'=>$resp" du php
//donc tu fait ce que tu veut du data
},error: function(xhr, status, error) {
// check status && error
}
});[/javascript]


Bon codage :)

Petit nouveau ! | 3 Messages

02 mars 2014, 20:41

Salut libertux, je te recontacte en espérant encore pouvoir te demander un peu d'aide car je n'ai pas su avancer de tout le weekend, même en cherchant énormément sur Google.

Mon fichier php que le javascript appele me repond ceci quand je vais dessus.
{"success":true,"data":{"COUNT(*)":"3"}}
j'essaye donc d'utiliser ta fonction javascript que tu ma donner au paravant
[javascript] $(document).ready(function($) {

Check();

function Check(){

$.ajax({
url : "http://battle-fighter.org/message.php",
type: "POST",
data : Data,
success: true
{

$("#new_email").show();

}
});

setTimeout(Check, 1000);
}


});[/javascript]

je connais vraiment pas grand chose dans le java script, j'ai essayer différentes modification dans le code pour le faire fonctionner mais sans succes

Eléphant du PHP | 83 Messages

09 mars 2014, 22:57

bonsoir DarkLord,

ton fichier PHP retourne un tableau JSON, donc tu a le ""success":true" qui veut dire que l'appel Ajax et le traitement sont aboutie, de plus tu a ""data":{"COUNT(*)":"3"}" c'est la valeur de retour donc on modifie un peut notre fonction comme suit :

[javascript]


$(document).ready(function($) {

Check();

function Check(){

$.ajax({
url : "http://battle-fighter.org/message.php",
type: "POST",
data : Data,
success: function(data){

if(data['COUNT(*)'] != 0){
$("#new_email").show();
}

}
});


[/javascript]

normalement ici on a ajouter "... success: function(data){ ..." pour récupérer la valeur de retour, puis on vérifie s'il y a un numéro différent de 0 .

voila en gros le principe, si tu a encore des soucis je suit la ;)
Bon codage,

Petit nouveau ! | 3 Messages

05 avr. 2014, 01:08

Desoler pour le temps de reponse libertux, bon avec un bout de ton code et un bout d'un autre code que j'ai decouvert en lisant un peu cette semaine, j'ai reussi a la perfection ce que je voulais faire donc merci a toi