Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
107
rated 0 times [  110] [ 3]  / answers: 1 / hits: 92259  / 12 Years ago, thu, february 14, 2013, 12:00:00

I'm pretty new to javascript and am working on an embedded system which decodes video over IP.



I have written a small app for setting up and changing channels using javascript and included a key handler for remote controls and an event handler so I can take some action or present a message if video stops or the network goes down, but now I also want to set up an automatic HTTP POST that gets sent when I change channel to include some data about the device and the url currently being played.



This is a small embedded hardware device running busybox, so I can't use Ajax or add any other normal web technologies, I just need to use Javascript to send a HTTP POST triggered by events I am monitoring, so my first goal is to be able to press a button and send that POST message then work out when to trigger it later.



Anyone familiar with doing such things that can give me a quick overview of how to send a post to a known listening device/location and include data in it?



Many thanks


More From » http

 Answers
22

This is easy if your Javascript engine supports XMLHttpRequest (XHR), which is ubiquitous on the web. Google it or see this page for details. I've provided a code snippet below. Read it carefully, particularly the comments on async being true and closures in response handlers. Also, this code is super lightweight as far as Javascript goes and I would expect it would work fine on just about any contemporary hardware footprint.



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

[#80223] Wednesday, February 13, 2013, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kinsley

Total Points: 352
Total Questions: 84
Total Answers: 94

Location: Denmark
Member since Tue, Jul 19, 2022
2 Years ago
;