2013-02-14 9 views
9

Jestem całkiem nowym użytkownikiem javascript i pracuję nad wbudowanym systemem, który dekoduje wideo przez IP.Wysyłanie adresu HTTP za pomocą zdarzenia wyzwalanego przez JavaScript

Napisałem małą aplikację do konfigurowania i zmiany kanałów przy użyciu javascript i dołączono obsługę kluczy dla pilotów i obsługi zdarzeń, dzięki czemu mogę podjąć pewne działania lub przedstawić komunikat, jeśli zatrzyma się wideo lub sieć przestanie działać, ale teraz chcę także ustawić automatyczne POST HTTP, które zostanie wysłane, gdy zmienię kanał, aby zawierało dane o urządzeniu i aktualnie odtwarzanym adresie URL.

To jest małe, wbudowane urządzenie sprzętowe, na którym działa busybox, więc nie mogę używać Ajaxa ani dodawać żadnych innych normalnych technologii internetowych, wystarczy użyć Javascript, aby wysłać HTTP POST wywołany przez monitorowane przeze mnie zdarzenia, więc moje pierwsze celem jest możliwość naciśnięcia przycisku i wysłanie tego komunikatu POST, a następnie ustalenie, kiedy ma on zostać uruchomiony później.

Ktoś, kto jest zaznajomiony z robieniem takich rzeczy, może dać mi szybki przegląd, jak wysłać post do znanego urządzenia/lokalizacji słuchania i dołączyć do niego dane?

Dziękujemy

+0

Jaki jest twój silnik JavaScript/środowisko uruchomieniowe? Czy masz obsługę XMLHttpRequest? Dwa główne środowiska javascript, które znam, to Javascript w przeglądarce i node.js. Pierwsza z nich wykorzystuje XMLHttpRequest do wysyłania wiadomości HTTP. Później używa wyspecjalizowanych bibliotek obsługi node.js. Każdy zapewnia bardzo prosty interfejs transmisji. –

+0

Witam Will, Tak, mamy obsługę XMLHttpRequest. –

Odpowiedz

24

Jest to łatwe, jeśli silnik JavaScript obsługuje XMLHttpRequest (XHR), który jest wszechobecny w Internecie. Google to lub zobacz this page w celu uzyskania szczegółowych informacji. Poniżej zamieściłem fragment kodu. Przeczytaj to uważnie, zwłaszcza komentarze dotyczące "asynchronizacji" są prawdziwe i zamknięcia w procedurach obsługi odpowiedzi. Ponadto, kod ten jest bardzo lekki jeśli chodzi o JavaScript i spodziewałbym się, że będzie działał dobrze na każdym współczesnym sprzęcie.

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); 
+0

Dzięki - to bardzo pomaga. –

+3

Używam node.js, a to działało dla mnie po dodaniu następującego wiersza przed var request = new XMLHttpRequest(); var XMLHttpRequest = require ("xmlhttprequest"). XMLHttpRequest; możesz również zainstalować XMLHttpRequest $ npm install xmlhttprequest – saad

Powiązane problemy