En ce moment, les news se fond rare, il est vrai que le temps manque.
Ma nouvelle fonction de développement Neolane au sein du groupe Pichet, et plus précisément mon rattachement au marketing me demande beaucoup d’énergie.
Ma femme étant enceinte (de 8 mois), je pense que la fin de l’année 2011 ne sera pas plus rempli de billets que son début.
Mais promis, pour 2012, je vais essayer de me remettre dans la publication régulière d’information, on pourra s’amuser avec du JavaScript E4X, encore du JQUERY, ou même du PHP.
Je vais réfléchir à structurer mes idées afin de mieux vous les proposer …..
Un plan d’actions est en cours de création, je vous tiens informé rapidement ….
Cela a dû vous arriver : mettre en place un WebService en PHP (client), et vous n’arrivez à gérer les erreurs lorsque le serveur distant ne répond pas.
La première solution consiste à modifier le niveau d’alerte, et à brider les « hurlements » des méthodes Soap en PHP.
La seconde solution consiste à gérer les connexion en amont afin de ne pas lancer le protocole Soap.
je m’explique : avant de lancer le code permettant la construction d’une connexion Soap avec votre serveur distant, vous aller tester si une connexion socket peut être ouverte sur votre serveur distant. Si cela est impossible, alors vous gérer l’erreur de manière fatale sans accéder à vos fonction Soap. Ainsi, pas d’erreur non géré.
Voici le code à mettre en place :
// on va tester le socket
$return = @stream_socket_client('tcp://monServeurDistant:80', $errno, $errstr, 5);
// si le socket du WS n'est pas connectable
if( $return === false ){
// On vé gérer l'erreur
}
else{
// on exécute le code Soap
}
Avec ceci, vous pourrez gérer les problèmes de connexion avant que la méthode Soap ne génère d’erreur !!
JSON : c’est un mode de code des données (on parle bien de données, comme dans une base de données) permettant un transfert architecturé logiquement et optimisé pour le réseau. Ce format est de plus en plus utilisé pour charger dynamiquement des données via des requêtes AJAX, ensuite c’est JavaScript qui va s’occuper d’intégrer ces données brut dans l’arbre DOM HTML.
Voici le code pour l’appel jQuery :
var monUrl = "test.php";
$.getJSON( monUrl, function(data) {
for(id in data){
alert( data[id] );
}
}
En PHP, coté serveur, il suffirai de créer un tableau simple de données, puis de passer ce tableau dans cette fonction :
echo json_encode( $monTableau );
Une petit aperçu d’un encodage JSON :
{"total":1318,"current":20,"next":20,"previous":-20}
C’est un tableau contenant « total », « current », « next », et « previous ».
Quoi de plus simple ?
Ensuite, il vous reste à créer une méthode de reconstruction DOM HTML.
Comment ? :
$('body').append( "<div>" + maData + "</div>" );
La méthode append permet d’ajouter dans l’arbre DOM HTML un code HTML.
Bien sûr, vous pourriez pointer autre chose que le body, par exemple un tableau HTML, ou une autre div, ou autre chose encore.
Juste une chose importante : lorsque vous ajouter des lignes dans un tableau HTML, pensez bien à ajouter les tbody pour chaque ligne, sinon IE ne voudra pas reconstruire correctement votre arbre DOM HTML.
C’est dans sa simplicité et sa compatibilité entre les navigateurs que jQuery a réussi à se distinguer. Beaucoup des utilisateurs utilisent jQuery car il permet une transversalité entre les navigateurs web du moment (et même les anciens).
Le module AJAX de jQuery est un des éléments avantageux et sans qui il serait laborieux de faire l’AJAX dans ses applications JavaScript. Personnellement, je l’utilise tous les jours, et c’est compatible avec tout ce que j’ai testé (même mon Nokia 5800 ExpressMusic et l’Iphone d’un collègue).
Donc rapidement, je vais vous balancer un code permettant de gérer de l’AJAX avec jQuery :
$.ajax({
type: "GET", // ou POST
url: "ajax.php", // l'url de mon fichier AJAX
data: "name=John&location=Boston", // les datas, seulement en POST, car en get on peut les mettre dans l'url
async: false, // le mode d'exécution de la requête : true : on bloque le navigateur en attendant la réponse de la page AJAX, false on peut continuer à utiliser le site même si la requête est en cours
success: function(data){ // une fonction anonyme qui sera exécuté lors en cas de succès.
alert( "Résultat de ma requête : " + data);
}
});
Voilà, rapidement, je vous conseil le GET en mode asynchrone à « true », cela permettra de ne pas rendre le navigateur « instable » et pas de réponse dans le cas ou le serveur planterai.
Juste rapidement, les organisateurs du forum PHP 2010 (AFUP) cherchent des conférenciers pour participer au forum PHP 2010.
Je vous mets le lien :
http://www.afup.org/pages/site/?route=actualites/412/experts-php-participez-au-forum-php-2010