23. juni 2014 - 23:17 Der er 5 kommentarer og
1 løsning

Skifte et Javascript Array i en TWebbrowser !

HEJ,

Indledningsvis:  Jeg er lidt usikker på, om dette spm. mere hører til under JavaScript-"afdelingen", men her er det:

Projectet er et GANTT-kort, opdelt i mandag --> søndag fra klokken 08:00 --> 24:00 (tidsstep 15 minutter) = en 7 * 65 matrix fra uge 1 --> uge 52 /53 for årene 2014 - 2020. Jeg viser en uge ad gangen. (der er en kalender, hvor der er mulighed for uge / måned/ års- skift.) 

Jeg bruger Delphi som "database" og styring og en Twebbrower som "display". Dvs, at al I/O foregår via JavaScript kontrollerede input-(output)-rutiner til/fra predefinerede felter på en Webside (som vel egentlig burde hedde en HTML-side) styret af Delphi.

Det betyder også , at databaser styres af delphi, med JS-support på web/HTML-siden. (Php, AJAX, mySQL og lignende er her 100% ukendte begreber og er aldeles uanvendelige!)

Databaser (hvis jeg må kalde det sådan) må oprettes og LÅSES som Javascript Arrays i de respektive web/HTML-sider. Delphi kan oprette dem (og gør det på visse sider) og via et sindigt Delphi-kontrolleret Webside-script lægger jeg data ind i det respektive Array med JS-SPLICE-funktionen. Det fungerer udmærket og giver kun korte skærm-blink (selv ved større Arrays).

De web/HTML-Sider som har disse Array er tomme når siden indlæses. 

Eksempelvis:

var inidata = new Array();
  inidata[0] = new Array ('', ...... '');  // Mandag
  ....
  inidata[n] = new Array ('', ...... '');  // SØndag

hvor splicefunktionen så lægger de rigtige data ind på pos (0,1 2 ... osv) og i det rigtige array.

Men jeg funderede på om der findes en rutine, hvor det er muligt at udskifte HELE  (del-) Arrayet (evt. som hel linie) på  EEN gang:

noget i stil med REPLACE(Webside, TOm-inidata[x], Fuld-inidata[N] );  (* webside , gamle (tomme) Array , nye (fyldte) Array *) 

At skifte tekst i selve HTML-teksten (<BODY>-delen) er ikke noget problem, men disse arrays er jo i <HEAD>-sektionen (javascript'et ) og der har jeg ikke umiddelbart adgang med de metoder og midler jeg har adgang til. 

Jeg har prøvet at overføre vi side-kaldet (http://minside.html?v1;v2;v3...v65; (og så parse dem))  men det holder ikke . Med 7*65 dataværdier er max-længde forlængst overskredet.


KRistian
Avatar billede HBP2 Praktikant
24. juni 2014 - 22:49 #1
Jeg forstår overhovedet ikke din forklaring, men de sidste 2 linjer er måske rigeligt: hvis du prøver at overføre 7*65 værdier i en URL (altså et GET request), så går det nok galt, som du selv skriver.

Men du kan sagtens overføre så mange værdier i et POST request.
25. juni 2014 - 00:51 #2
HEJ HPB2,

Du skriver:
"
Jeg forstår overhovedet ikke din forklaring, men de sidste 2 linjer er måske rigeligt: hvis du prøver at overføre 7*65 værdier i en URL (altså et GET request), så går det nok galt, som du selv skriver. "

Prøv at læse teksten igen , men denne gang med denne vridning / option / valg:

DET ER NETOP DET JEG IKKE GØR, FOR DET FÅR BROWSEREN TIL AT DØ ! og det er faktisk osse det jeg skriver i min tekst :

Citat:
"
Jeg har prøvet at overføre vi side-kaldet (http://minside.html?v1;v2;v3...v65; (og så parse dem))  men det holder ikke . Med 7*65 dataværdier er max-længde forlængst overskredet.  "

Men bortset fra det: 

Jeg søgte 2 timer intensivt på nettet og jeg tror jeg endelig fandt en løsning, som ligner lidt på en JavaScript - XML ISLAND- løsning.

De foreløbige eksperimenter viser gode tegn.

Kristian
Avatar billede mbsnet Nybegynder
27. juni 2014 - 02:25 #3
hvis du kan flytte dataen til body så prøv at lave et hidden div-tag med et id og så udskifte innerHTML på den måsk, bare et lille bud...
27. juni 2014 - 09:56 #4
HEJ,

Nok engang tak for respons.

Jeg tror jeg har løst problemet / (læs: opgaven).

Jeg surfede et par timer forleden aften - pludselig fik jeg en indskydelse på at surfe på noget - jeg selvfølgelig har glemt nu -.

Afprøvede det (og det funkede ikke), men gik koden igennem (syntaksfejl som bare.... !), rettede og fik nogle af mine data.

AHA, der var delvist "hul igennem".  Gik så alting minutiøst igennem - der var også XML-fejl. Og ved sidste kørsel fungerede det.

Det som er etableret er en den ønskedr lokal-løsning, som jeg ønskede. Og det funger nu.

Koden er som følger:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
    while(xmlDoc.readyState != 4) {};
    xmlDoc.load('minXMLfile.xml');

var M = xmlDoc.getElementsByTagName("førsteTagNavn");

(
<xml .....    >
<førsteTagNavn>
<data1 = var1="" .... var10="" />
...
</førsteTagNavn>
}

OSV

Og så er det bare at XML'e der u' a' ... (hehe).

KR
Avatar billede mbsnet Nybegynder
27. juni 2014 - 10:17 #5
ok godt du fandt ud af det :)
08. juli 2014 - 11:05 #6
Lukker spm.

KR
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester