2013-07-29 4 views
0

Je veux poster les données suivantes:Demande JSON POST - données JSON, Comment faire une demande de poste avec des données au format JSON

{ 
    "contactsync": 
     { "rev":4, 
     "contacts":[ 
        { "fields": [ 
           { 
            "value": 
             { 
             "givenName":"dfgheeej", 
             "familyName":"ffftestfff" 
             }, 
            "type":"name", 
            "flags":[], 
            "op":"add" 
           }, 
           { 
            "value":"fffffff", 
            "type":"nickname", 
            "flags":[], 
            "op":"add" 
           }, 
           { 
            "value":"[email protected]", 
            "type":"email", 
            "flags":[], 
            "op":"add" 
           } 
          ], 
        "categories":[], 
        "op":"add" 
        } 
     } 
} 

à une URL. (Comme: site.com/anything/add?format=json & wssid = t4764.444 & wssid = some_value & WindowID = & r = 776566756)

Comment puis-je posterai données ci-dessus à une URL par le biais éventuellement javascript? (Je veux créer un fichier html pour cela contenant le script pour le faire.)

Tout cela n'arrivera pas sur le même serveur, je veux publier des données d'un autre serveur à l'autre.

+0

@ HeinA.Grønnestad: J'ai essayé le modèle XMLHTTPREQUEST pour le faire et la méthode normale de soumission de formulaire .. mais cela n'a pas fonctionné! – Lady

+0

J'ai joué avec json entre php et javascript, mais dans l'autre sens. Je pense que ça peut être un peu difficile. Quoi qu'il en soit, as-tu essayé de mettre des doubles guillemets autour de la structure entière de Json et d'échapper aux autres doubles marques de quatation, puis en php de décoder à nouveau le json? –

+0

Les navigateurs modernes implémentent ['JSON.stringify()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify), ce qui vous permet d'obtenir une chaîne la représentation de votre objet, mais vous je ne suis pas sûr que l'utilisation d'une telle méthode est la meilleure solution, du point de vue architectural. – MasterAM

Répondre

0

Vous pouvez utiliser ajax si votre script sera sur le même serveur, le serveur prenant en charge CORS ou le serveur prenant en charge JSONP. En utilisant jQuery il sera:

var data = {"contactsync":{"rev":4,"contacts":[{"fields":[{"value":{"givenName":"dfgheeej","familyName":"ffftestfff"},"type":"name","flags":[],"op":"add"},{"value":"fffffff","type":"nickname","flags":[],"op":"add"},{"value":"[email protected]","type":"email","flags":[],"op":"add"}],"categories":[],"op":"add"}]}}; 
var url = 'site.com/anything/addformat=json&wssid=t4764.444&wssid=some_value&windowid=&r=776566756'; 

$.post(url, JSON.stringify(data), function(response) { 

}); 

si vous ne pouvez pas utiliser ajax vous devez créer un proxy en php (il suffit de passer le JSON à l'adresse à distance et la réponse d'impression) comme:

function post($url, $data) { 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    return curl_exec($ch); 
} 

function get_raw_post_data() { 
    if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { 
     return $GLOBALS['HTTP_RAW_POST_DATA']; 
    } else { 
     return file_get_contents('php://input'); 
    } 
} 

$url = "site.com/anything/addformat=json&wssid=t4764.444&wssid=some_value&windowid=&r=776566756"; 

echo post($url, get_raw_post_data()); 

puis insidead de l'URL du site distant vous utilisez votre script sur le même serveur.

+0

Je souhaite publier des données sur un autre serveur distant (pas le même serveur). – Lady

+0

@Lady puis utiliser ce proxy PHP que j'ai écrit. – jcubic

Questions connexes