2013-02-14 17 views
9

Javascript için oldukça yeni ve IP üzerinden video kodunu çözen yerleşik bir sistem üzerinde çalışıyorum.Javascript tetiklenen olay kullanarak bir HTTP Gönderi gönderme

Javascript kullanarak kanalları ayarlamak ve değiştirmek için küçük bir uygulama yazdım ve uzaktan kumandalar ve bir olay işleyicisi için bir anahtar işleyicisi dahil ettim, böylece bir video eylemi veya ağ bittiğinde bir işlem yapabilir veya bir mesaj sunabilirim; Şimdi ayrıca, cihaz ile ilgili ve oynatılmakta olan url ile ilgili bazı verileri içermek üzere kanalı değiştirdiğimde gönderilen otomatik bir HTTP POST'u kurmak istiyorum.

Bu, meşgul kutusu çalıştıran küçük bir yerleşik donanım aygıtıdır, bu yüzden Ajax'ı kullanamıyorum veya başka herhangi bir normal web teknolojisini ekleyemiyorum, sadece gözlemlediğim olayların tetiklediği bir HTTP POST göndermek için Javascript kullanmam gerekiyor, benim ilk Amaç, bir düğmeye basıp o POST mesajını gönderebilmek ve daha sonra ne zaman tetikleyeceğinizi öğrenmek.

Bilinen bir dinleme aygıtına/konumuna bir gönderinin nasıl gönderileceğine ve veri içerisine nasıl ekleneceğine hızlı bir genel bakış sağlayabilecek böyle şeyler yapmayı bilen herkes var mı?

çok teşekkürler

+0

Javascript motorunuz/çalışma zamanı nedir? XMLHttpRequest desteğiniz var mı? Tanıdığım iki büyük javascript ortamı tarayıcıda Javascript ve node.js. Birincisi, HTTP mesajları göndermek için XMLHttpRequest'i kullanmaktadır. Daha sonra özel node.js destek kütüphaneleri kullanılır. Her biri çok basit bir iletim API'si sağlar. –

+0

Merhaba Will, Evet, XMLHttpRequest desteğimiz var. –

cevap

24

sizin JavaScript motoru web üzerinde her yerde olduğu XMLHttpRequest (XHR) destekler, bu kolaydır. Google'a veya detaylar için this page'a bakın. Aşağıda bir kod snippet'i sağladım. Dikkatlice okuyunuz, özellikle "async" hakkındaki yorumlar, yanıt alıcılarda gerçek ve kapanışlar. Ayrıca, bu kod, Javascript'e gelince süper hafiftir ve hemen hemen tüm modern donanım ayak izleri üzerinde iyi çalışmasını beklerdim.

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

Teşekkürler - bu çok yardımcı olur. –

+3

node.js'yi kullanıyorum ve bu, var request = new XMLHttpRequest(); var XMLHttpRequest = gereklilik ("xmlhttprequest"). XMLHttpRequest; Ayrıca, XMLHttpRequest yüklemek isteyebilirsiniz $ npm install xmlhttprequest – saad

İlgili konular