 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
frenki Moderator



Pridružen-a: Ned 23 Feb 2003 21:26 Prispevkov: 6739 Aktiv.: 28.36 Kraj: Ljubljana (JN76GB)
|
Objavljeno: Pet Jun 19, 2009 9:22 am Naslov sporočila: Kako izvesti zahtevo brez uporabe Jave? |
|
|
Naprava je dosegljiva preko web vmesnika. Zadeva generira stran, kjer pokljukaš par polj in izvedeš. Rad bi se pa znebil potrebe po javi oziroma rad bi sestavil URL naslov z vsemi parametri, ki bi šel kot http request. Torej tole bi rad nadomestil:
Koda: |
<input type="button" value="ON" name="B4" onclick="GetGroupOn()" style="color: #0000FF" id="T14"> |
z nečem, kar bi šlo direktno na strežnik .
Torej brez izvajanja tegale:
Koda: |
var ObjArray = new Array;
var timer;
var timeout = 0;
var portA = new Array('A1','A2','A3','A4','A5','A6','A7','A8');
var portC = new Array('C1','C2','C3','C4','C5','C6','C7','C8');
function GetXmlHttpObject(handler)
{
var objXmlHttp = null;
if(navigator.userAgent.indexOf("MSIE")>=0)
{
var ClassName = "Msxml2.XMLHTTP";
if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
ClassName = "Microsoft.XMLHTTP";
}
try
{
objXmlHttp = new ActiveXObject(ClassName);
objXmlHttp.onreadystatechange = handler;
return objXmlHttp;
}
catch(e)
{
alert("Error: ActiveX scripting may be disabled.");
return;
}
}
else
{
try
{
objXmlHttp = new XMLHttpRequest();
objXmlHttp.onload = handler;
objXmlHttp.onerror = handler;
return objXmlHttp;
}
catch(e)
{
alert("Error: Browser may not be supported.");
}
}
}
function GetServerFile(FileName, AssignTo)
{
var NiftyObj = new Object();
NiftyObj.XMLDevice = new GetXmlHttpObject(StateChanged);
NiftyObj.XMLDevice.open("GET", FileName, true);
NiftyObj.XMLDevice.send(null);
NiftyObj.Text = AssignTo;
ObjArray.push(NiftyObj);
}
function StateChanged()
{
for(i in ObjArray)
{
if(ObjArray[i].XMLDevice.readyState != "4" && ObjArray[i].XMLDevice.readyState != "complete")
continue;
if(ObjArray[i].Text != "")
{
document.getElementById(ObjArray[i].Text).innerHTML=ObjArray[i].XMLDevice.responseText;
}
if(ObjArray[i].Text == "txtcontrol")
{
if(timeout == 1)
{
timeout = 0;
if(navigator.userAgent.indexOf("Firefox") >= 0)
{
ObjArray[i].XMLDevice = new GetXmlHttpObject(StateChanged);
ObjArray[i].XMLDevice.open("GET", "control.cgi", true);
ObjArray[i].XMLDevice.send();
}
else
{
ObjArray[i].XMLDevice.onreadystatechange = StateChanged;
ObjArray[i].XMLDevice.open("GET", "control.cgi", true);
ObjArray[i].XMLDevice.onreadystatechange = StateChanged;
ObjArray[i].XMLDevice.send();
}
}
else
{
delete ObjArray[i].XMLDevice;
delete ObjArray[i].Text;
delete ObjArray[i];
}
}
else
{
delete ObjArray[i].XMLDevice;
delete ObjArray[i].Text;
delete ObjArray[i];
}
}
}
function ChechState()
{
if(timeout == 0)
{
timeout = 1;
}
else
GetServerFile('control.cgi','txtcontrol');
if(!document.getElementById('Z1'))
return;
var data1 = new String(document.getElementById('Z1').name);
var data2 = data1.split(",");
var n = parseInt(data2[1]);
document.getElementById('T2').childNodes[0].nodeValue = (n/10) + " (A)";
if(data2[2] == "0")
document.getElementById('T3').childNodes[0].nodeValue = "Normal";
else if(data2[2] == "1")
document.getElementById('T3').childNodes[0].nodeValue = "Warning!";
else if(data2[2] == "2")
document.getElementById('T3').childNodes[0].nodeValue = "Overloading!!";
for(var i = 0; i < 8; i++)
{
if(data2[0].charAt(i) == '0')
{
if(document.getElementById(portA[i]).childNodes[0].nodeValue != 'OFF')
{
document.getElementById(portA[i]).childNodes[0].nodeValue='OFF';
}
}
else
{
if(document.getElementById(portA[i]).childNodes[0].nodeValue != 'ON')
{
document.getElementById(portA[i]).childNodes[0].nodeValue='ON';
}
}
}
}
function GetGroupOn()
{
var data0 = document.getElementById('T12').value;
var data1 = document.getElementById('T13').value;
var sta = "";
if(!(data0.length >= 1 && data0.length <= 16))
{
alert("The ID min length is 1 and max length is 16");
document.getElementById('T12').value = "";
return false;
}
if(!(data1.length >= 1 && data1.length <= 16))
{
alert("The ID min length is 1 and max length is 16");
document.getElementById('T13').value = "";
return false;
}
for(var i = 0; i < 8; i++)
{
if(document.getElementById(portC[i]).checked)
sta += "1";
else
sta += "0";
}
GetServerFile('1?3=' + data0 + ',' + data1 + ',' + sta + ',','');
}
function GetGroupOff()
{
var data0 = document.getElementById('T12').value;
var data1 = document.getElementById('T13').value;
var sta = "";
if(!(data0.length >= 1 && data0.length <= 16))
{
alert("The ID min length is 1 and max length is 16");
document.getElementById('T12').value = "";
return false;
}
if(!(data1.length >= 1 && data1.length <= 16))
{
alert("The ID min length is 1 and max length is 16");
document.getElementById('T13').value = "";
return false;
}
for(var i = 0; i < 8; i++)
{
if(document.getElementById(portC[i]).checked)
sta += "1";
else
sta += "0";
}
GetServerFile('3?3=' + data0 + ',' + data1 + ',' + sta + ',','');
}
function GetChange()
{
var d;
if(document.getElementById('C0').checked)
{
for(d=0; d < 8; d++)
document.getElementById(portC[d]).checked = 1;
}
else
{
for(d=0; d < 8; d++)
document.getElementById(portC[d]).checked = 0;
}
}
function MyShow()
{
timer = window.setInterval("ChechState()",1000);
}
|
|
|
Nazaj na vrh |
|
 |
frenki Moderator



Pridružen-a: Ned 23 Feb 2003 21:26 Prispevkov: 6739 Aktiv.: 28.36 Kraj: Ljubljana (JN76GB)
|
Objavljeno: Ned Jun 21, 2009 11:21 pm Naslov sporočila: |
|
|
Idej očitno ni . A bi šlo mogoče s kakim enostavnim snifferjem pogledat, kaj mu browser pošlje?
Lp, Frenki |
|
Nazaj na vrh |
|
 |
Umnik Član

Pridružen-a: Čet 16 Sep 2004 17:52 Prispevkov: 958 Aktiv.: 4.03 Kraj: Novo mesto
|
Objavljeno: Ned Jun 21, 2009 11:57 pm Naslov sporočila: |
|
|
Kaj mu browser pošlje lahko pogledaš z Wireshark-om, na PCju kjer 'teče' browser.
Kaj bi pravzaprav rad naredil? Da se pošlje kot http request brez klikanja, ali takrat ko se klikne na gumb izbrano in pokljukano?
Prvo lahko narediš s periodičnim izvajanjem XMLHttpRequest objekta (kar ti očitno ni všeč), drugo bi pa morda šlo s <form> </form>, samo potem pokuriš flash naprave. |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Jun 22, 2009 12:29 am Naslov sporočila: |
|
|
Kot prvo, ne gre za javo, ampak za javascript, oz. bolj specifično za ajax.
Teoretično bi se dalo to nadomestiti z enim HTTP GET, vprašanje kako je spisano na napravi. Se pravi spišeš lastno formo, ki jo submitaš kot GET request na naslov naprave.
Na prvi uč pošlje brskalnik vrednost dveh (vnosnih - predvidevam) polj - T12 in T13, poleg tega pa še število obkljukanih polj z id-jem portC[x]. GET request zgleda nekako takole:
Koda: |
1?3=T12_vrednost,T13_vrednost,stevilo_obkljukanih_polj |
LP! |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70607.86
|
Objavljeno: Pon Jun 22, 2009 7:51 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Pon Jun 22, 2009 9:34 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70607.86
|
Objavljeno: Pon Jun 22, 2009 10:03 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 10 dni
Powered by phpBB © 2001, 2005 phpBB Group
|