www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Kako izvesti zahtevo brez uporabe Jave?

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
frenki
Moderator
Moderator



Pridružen-a: Ned 23 Feb 2003 21:26
Prispevkov: 6739
Aktiv.: 28.36
Kraj: Ljubljana (JN76GB)

PrispevekObjavljeno: Pet Jun 19, 2009 9:22 am    Naslov sporočila:  Kako izvesti zahtevo brez uporabe Jave? Odgovori s citatom

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 Confused .

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
frenki
Moderator
Moderator



Pridružen-a: Ned 23 Feb 2003 21:26
Prispevkov: 6739
Aktiv.: 28.36
Kraj: Ljubljana (JN76GB)

PrispevekObjavljeno: Ned Jun 21, 2009 11:21 pm    Naslov sporočila:   Odgovori s citatom

Idej očitno ni Confused . A bi šlo mogoče s kakim enostavnim snifferjem pogledat, kaj mu browser pošlje?

Lp, Frenki
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.03
Kraj: Novo mesto

PrispevekObjavljeno: Ned Jun 21, 2009 11:57 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Pon Jun 22, 2009 12:29 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70610.27

PrispevekObjavljeno: Pon Jun 22, 2009 7:51 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Pon Jun 22, 2009 9:34 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70610.27

PrispevekObjavljeno: Pon Jun 22, 2009 10:03 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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