Bonjour,

J'essaie de récupérer des données dans une fonction javascript afin de mettre à jour des états sur une page html (donc une petite requête AJAX en utilisant la lib prototype). Côté serveur c'est un cgi (écrit en c) qui doit se charger de retourner les données.
Voulant bien faire j'essaie d'utiliser JSON mais pas moyen de récupérer les données (json vaut null dans la fonction onSuccess).

Si j'exécute la requête directement (obtenue via firebug) j'obtiens bien les données recherchées dans un fichier proposé en téléchargement

=> ci dessous les quelques lignes de mon test et le fichier de donnée que j'obtiens, si quelqu'un peut m'éclairer !

Côté client, l'appel javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
/* Méthode permettant d'ajouter des scripts dans le head de la page */
int states_addScriptsToHead(t_infos_page* infos_page)
{
	printf("<script type=\"text/javascript\" src=\"/scripts/prototype/prototype-1.6.0.3.js\"></script>\n");
 
	printf("<script type=\"text/javascript\" language=\"javascript\">\n");
 
	printf("<!-- Méthode appelée pour raffraichir les états -->\n");
	printf( "function onRefresh() { \n "
			"	new Ajax.Request('%s', \
				{ \
				  method: 'get', \
				  parameters: {lang:'%s', affichage:%d, onglet:%d, gid:%d, msg:0, step:%d, mode:%d}, \
				  onSuccess: function(transport, json) { \
							alert('Succès ! json : ' + json.id01); \
							 }, \
				  onFailure: function() { alert('Error ?!'); }, \
				} \
				);\n"
			"} \n", infos_page->sUrlBase, infos_page->lang, infos_page->iModeAffichage, infos_page->iNoOnglet, infos_page->gid, infos_page->iStep, MODE_AJAX_REQUEST);
 
	printf("</script>\n");
 
	return NO_ERROR;
}
Côté serveur, la génération des données (j'utilise la librairie cJSON) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
/* Méthode appelée pour les requêtes ajax */
int states_ajax_request(t_infos_page* infos_page)
{
	cJSON *root;
	char *out;
 
	root = cJSON_CreateObject();
	cJSON_AddItemToObject(root, "id01", cJSON_CreateNumber(0));
	cJSON_AddItemToObject(root, "id02", cJSON_CreateNumber(0));
	cJSON_AddItemToObject(root, "id03", cJSON_CreateNumber(1));
	cJSON_AddItemToObject(root, "id04", cJSON_CreateNumber(1));
	cJSON_AddItemToObject(root, "id05", cJSON_CreateNumber(0));
 
	out = cJSON_Print(root);
 
	fprintf(stdout, "Content-type: application/json ; charset=%s\n\n", CHARSET_DEFAULT);
	fprintf(stdout, "%s\n", out);
 
	cJSON_Delete(root);
	free(out);
	return 0;
}
Le résultat de la requête comme quoi je ne doit pas être très loin du résultat mais je ne vois pas pourquoi je n'ai rien dans l'objet json !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
{
	"id01":	0,
	"id02":	0,
	"id03":	1,
	"id04":	1,
	"id05":	0
}