web-dev-qa-db-fra.com

Envoi d'une publication HTTP à l'aide d'un événement déclenché par Javascript

Je suis assez nouveau sur javascript et je travaille sur un système embarqué qui décode la vidéo sur IP.

J'ai écrit une petite application pour configurer et changer les canaux en utilisant javascript et inclus un gestionnaire de clés pour les télécommandes et un gestionnaire d'événements afin que je puisse prendre des mesures ou présenter un message si la vidéo s'arrête ou le réseau tombe en panne, mais maintenant je veux aussi pour configurer un HTTP automatique POST qui est envoyé lorsque je change de chaîne pour inclure des données sur l'appareil et l'URL en cours de lecture.

Ceci est un petit périphérique matériel embarqué exécutant busybox, donc je ne peux pas utiliser Ajax ou ajouter d'autres technologies Web normales, j'ai juste besoin d'utiliser Javascript pour envoyer un HTTP POST déclenché par les événements que je suis surveillance, donc mon premier objectif est de pouvoir appuyer sur un bouton et envoyer ce message POST puis déterminer quand le déclencher plus tard.

Quiconque est familier avec de telles choses qui peut me donner un aperçu rapide de la façon d'envoyer un message à un appareil/emplacement d'écoute connu et d'y inclure des données?

Merci beaucoup

12
Andy Henry

C'est facile si votre moteur Javascript prend en charge XMLHttpRequest (XHR), qui est omniprésent sur le Web. Google ou voir cette page pour plus de détails. J'ai fourni un extrait de code ci-dessous. Lisez-le attentivement, en particulier les commentaires sur "async" et les fermetures des gestionnaires de réponse. En outre, ce code est super léger en ce qui concerne Javascript et je m'attendrais à ce qu'il fonctionne correctement sur à peu près n'importe quelle empreinte matérielle contemporaine.

var url = "http://www.google.com/";
var method = "POST";
var postData = "Some data";

// You REALLY want shouldBeAsync = true.
// Otherwise, it'll block ALL execution waiting for server response.
var shouldBeAsync = true;

var request = new XMLHttpRequest();

// Before we send anything, we first have to say what we will do when the
// server responds. This seems backwards (say how we'll respond before we send
// the request? huh?), but that's how Javascript works.
// This function attached to the XMLHttpRequest "onload" property specifies how
// the HTTP response will be handled. 
request.onload = function () {

   // Because of javascript's fabulous closure concept, the XMLHttpRequest "request"
   // object declared above is available in this function even though this function
   // executes long after the request is sent and long after this function is
   // instantiated. This fact is CRUCIAL to the workings of XHR in ordinary
   // applications.

   // You can get all kinds of information about the HTTP response.
   var status = request.status; // HTTP response status, e.g., 200 for "200 OK"
   var data = request.responseText; // Returned data, e.g., an HTML document.
}

request.open(method, url, shouldBeAsync);

request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
// Or... request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
// Or... whatever

// Actually sends the request to the server.
request.send(postData);
33
Will Nelson