web-dev-qa-db-fra.com

Utiliser JSON POST Demande

J'essaie d'utiliser JSON pour lancer une demande POST à une API.

J'ai trouvé un exemple de code, et avant d'aller trop loin, je voulais que cela fonctionne, mais je suis coincé ...

<html>
<head>
<script type="text/javascript">
function JSONTest()
{
requestNumber = JSONRequest.post(
    "https://example.com/api/",
    {
        apikey: "23462",
        method: "example",
        ip: "208.74.35.5"
    },
    function (requestNumber, value, exception) {
        if (value) {
            processResponse(value);
        } else {
            processError(exception);
        }
    }
); 
}
</script>
</head>
<body>

<h1>My JSON Web Page</h1>


<button type="button" onclick="JSONTest()">JSON</button>

</body>
</html> 

C’est un fichier .html, que j’utilise en chrome. Rien ne se passe quand je clique sur le bouton ... 

Je pense qu'il me manque un morceau de javascript qui interprète la réponse JSON et peut être affiché? sinon un autre conseil?

13
GK1667

Un exemple utilisant jQuery est ci-dessous. J'espère que cela t'aides

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<title>My jQuery JSON Web Page</title>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">

JSONTest = function() {

    var resultDiv = $("#resultDivContainer");

    $.ajax({
        url: "https://example.com/api/",
        type: "POST",
        data: { apiKey: "23462", method: "example", ip: "208.74.35.5" },
        dataType: "json",
        success: function (result) {
            switch (result) {
                case true:
                    processResponse(result);
                    break;
                default:
                    resultDiv.html(result);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
        }
    });
};

</script>
</head>
<body>

<h1>My jQuery JSON Web Page</h1>

<div id="resultDivContainer"></div>

<button type="button" onclick="JSONTest()">JSON</button>

</body>
</html> 

Processus de débogage Firebug

Firebug XHR debug process

27
Phil

Les navigateurs modernes n'implémentent pas actuellement JSONRequest (pour autant que je sache) car il ne s'agit que d'un brouillon. J'ai trouvé quelqu'un qui l'a implémentée comme une bibliothèque que vous pouvez inclure dans votre page: http://devpro.it/JSON/files/JSONRequest-js.html (notez qu'il y a quelques dépendances) .

Sinon, vous voudrez peut-être utiliser une autre bibliothèque JS telle que jQuery ou Mootools.

0
Ivan