2010-01-15 4 views
-1

En utilisant Firebug sur un site, j'ai remarqué cette demande JSON POST:Affichage des données JSON indiquées dans l'entête HTML

POST /xxxx/yyy 
Host test.it 
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 300 
Connection keep-alive 
Content-Type text/plain; charset=UTF-8 
Referer http://test.it/preview/2.1284/2.1988/2.16289 
Content-Length 186 
Cookie userId=61080064567894730d450a494fee0af5 
Pragma no-cache 
Cache-Control no-cache 

{id:4,method:"contentBridge.setComponentValue",params:["7.92961", "name", "Welcome", "", {"javaClass": "java.util.HashMap", "map": {"en": false, "es": false, "de": false, "fr": false}}]} 

La question est de savoir qu'ils utilisent jQuery, JSONRPC et Polopoly cm, il est possible d'afficher les mêmes données JSON mais à partir d'une page hébergée sur mon serveur web?

Répondre

2

Oui.

Les en-têtes ici ne sont pas vraiment importants, sauf pour le verbe HTTP POST en haut.

Le bit correspondant est la chaîne JSON: il ressemble à un appel JSONRPC - c'est l'objet extérieur avec id, method et params. Ces paramètres sont un tableau et le dernier paramètre semble être une classe Java sérialisée JSON.

Vous pouvez utiliser vous-même facilement en utilisant jQuery:

$.ajax({ 
    url: 'yourserver.com/service', 
    dataType: 'json', 
    data: { 
     id:4, 
     method:"contentBridge.setComponentValue", 
     params:[ 
      "7.92961", 
      "name", 
      "Welcome", 
      "", 
      { 
       "javaClass": "java.util.HashMap", 
       "map": { 
        "en": false, 
        "es": false, 
        "de": false, 
        "fr": false 
       } 
      } 
     ] 
    }, 
    success: function() { /* */ } 
}); 

Si ce script est en cours d'exécution à partir du navigateur (par exemple en tant que script Ubiquity) vous devriez être ok, mais si elle est en cours d'exécution sur une page sur un site différent s'attendre à beaucoup de problèmes. Je pense que tous les navigateurs bloquent les appels AJAX inter-domaines par défaut.