Help! HTML

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
Nu e stupid, e făcut ca să nu pățești chestii nasoale când schimbi ceva via scripts - dacă schimbi via scripts se presupune că știi ce faci. Dacă trebuie să schimbi 2 valori în 2 câmpuri diferite și fiecare are un onchange, poți avea probleme că-ți face trigger când nu vrei, sau poți avea referințe circulare (ex: în anumite condiții input 1 schimbă onchange câmpul 2, câmpul 2 schimbă onchange câmpul 1, dacă faci asta via script și se activează imediat onchange poți intra în buclă infinită înainte să apuci să setezi toate valorile cum trebuie). Corect e să setezi toate valorile și apoi să apelezi onchange pe ce ai nevoie (un fel de "commit"). Gândește-te și cum ai modifica valoarea elementului din interiorul onchange-ului dacă s-ar activa automat trigger-ul - ar fi o buclă infinită la orice încercare.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Am o pagina web. In ea, un iframe cu src custom in functie de sectiunea din iframe care vreau sa fie vizibila:
<iframe src='Main.htm#TabS'>
Iframe-ul contine niste div-uri cu diverse ID-uri printre care:
<div id='TabS'>
si CSS-ul:
div {display:none;}
div:target {display:block;}


Cand se afiseaza pagina, acel div cu id=TabS ar trebui sa fie vizibil. In FF merge, in IE 8 nu.
Exista vreo solutie pentru IE 8?
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
:target e suportat din IE9, ca majoritatea CSS-ului actual. Cel mai simplu e să instalezi Firefox, că o să mai dai de de-astea și până la urmă se umple codul de workarounds pentru o chestie care ar trebui să fie uitată.

Dacă chiar vrei workarounds, doar din CSS nu se poate, faci un js mic care ia anchor din url și setează display pe div-ul din anchor.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Acum ca e vacanta, ar fi cazul sa invat si eu niste JS mai evoluat. Am nevoie de niste documentatie despre AJAX, XMLHttpRequest, JSON, etc.
Partea din browser am priceput-o (relativ...), dar nicaieri nu gasesc ceva despre partea de pe server. Ce face legatura intre acel URL din XMLHttpRequest si baza de date si cum generez JSON pornind de la SQL?

PS: Rog un moderator sa faca split intr-un topic separat pentru intrebarile legate de JS.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
Păi momentan nu ai întrebat nimic legat de JS, doar de backend (server-side); pe care îl faci cum îți place, cu ce îți oferă limbajul, cu biblioteci de JSON sau chiar formatând JSON direct din db.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Intalnesc cateodata o eroare care pur si simplu ma lasa cu gura cascata. Uite una:
Code:
function getData($SID){ // Obtine datele de la server
   var xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function(){
       switch(this.readyState){
           case 1: showMessage(2, 'Cerere trimisa. Astept raspuns...'); break;
           case 2: switch(this.status.charAt(0)){ // EROARE AICI!
               case 1: showMessage(2,this.status+' '+this.statusText); break;
               case 2: showMessage(0,'Conectat.'); break;
               case 3: showMessage(2,this.status+' '+this.statusText); break;
               case 4:
               case 5: showMessage(5,this.status+' '+this.statusText); break;}
               break;
           case 3: showMessage(2, 'Conectat. Se downloadeaza...'); break;
           case 4: processData(this.responseType,this.response); break;}}
   xhttp.open("GET", "stub.php?SID=" + $SID + "&SType=" + $selectedSType, true);
   xhttp.send();}
TypeError: this.status.charAt is not a function
De ce? .status este unsigned integer, dar JS ar trebui sa fie weak typed? De ce nu mi-l transforma in string?

I hate javascript.
 
Last edited:

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
Ai început exact cu cele mai ambigue și detestate chestii în js, implicit type coercion, pe care toată lumea recomandă să le eviți :smile:. Doar anumiți operatori (ex: plus) fac type coercion. Apelarea de metode ale unui obiect nu vor face niciodată transformări; poți să ai 200 de obiecte care au charAt, de unde să știe el că ăla pe care-l vrei e String? Vezi aici detalii.

În aceeași notă, vezi diferența între =, == și ===, null, undefined, NaN, și negații. Ex: null == undefined, dar și null !== undefined.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Ah, crap, mai bine nu intrebam! Sunt si moduri mai bune de a petrece o zi libera.
Am rezolvat cu String(chestia-aia).charAt(0)
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
XMLHttpRequest functioneaza. Dar e lent ca naiba!
Se poate face o conexiune cu XMLHttpRequest persistenta, pentru mai multe schimburi de date? Daca da, cum? Pe google n-am gasit mare lucru. Se discuta doar despre tinerea deschisa a unei conexiuni prin care serverul sa tot trimita date din cand in cand. Eu vreau sa trimit request-uri multiple, consecutive, prin aceeasi conexiune.

Inca o intrebare:
Care sunt posibilitatile de a conecta un client care foloseste XMLHttpRequest sau websockets la un server cu MS SQL Server? Ce imi trebuie intermediar intre astea doua? Ideal ar fi o latenta minima intre request si reply.
 

puterfixer

Administrator
Sugar daddy
Joined
Oct 30, 2003
Conexiunea se face prin invocarea unei metode cu parametrii aferenți. Cam cum ai vrea să poți refolosi conexiunea pentru mai multe metode cu parametri diferiți, când standardul este altfel?

XMLHttpRequest este un API dintre un cod JavaScript din browser și un server web. Dacă vrei să interfațezi direct cu un server de baze de date, ar fi cazul să folosești API-ul serverului de baze de date, sau să faci XMLHttpRequest spre un server web pe post de front-end care apoi, prin ceva script sau aplicație, intermediază tranzacțiile cu serverul de baze de date din back-end.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Vezi că ai ajuns MULT pe arătură dacă ai dat de SOAP. 90% din aplicațiile web de-acum transferă JSON, cât mai simplu și rapid. X din AJAX e doar o rămășiță.
Am vrut o interfata mai directa cu M$ SQL Server. N-are JSON - am cautat.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
Nu cred că vrei interfață directă între UI și o bază de date. Cum te autentifici? Cum faci filtrări după users/roluri ca să nu aibă UI-ul (adică orice user cu browser) acces la absolut toată baza de date? Unde va fi logica de business, în UI sau DB?

Quark: ai încercat realtime-ul scoțând punga cu fitile pe balcon?
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Se da un router chior. Are server web chior. Serveste doar HTML-uri, nu si TXT. Vreau sa-mi serveasca un .txt (/var/log/messages), dar daca ii fac un symbolic link cu .htm, formatarea este aiurea.
Partea buna este ca pot crea HTML cu orice continut static. Cum fac sa afisez continutul unui .txt (fisier separat, dinamic, cu line-endings de linux) intr-un fisier HTML fara sa am la dispozitie server-side scripts? Si sa arate si bine?
 

Fred

Membru Senior
Joined
Jan 4, 2019
Nu cred ca ce vrei tu exista: un TXT care sa fie afisat frumos ca HTML. O varianta e ca acel TXT sa fie de fapt un HTML si cu style inline, dar nu cred ca inteleg ce vrei sa faci acolo, asa ca nu pot spune mai multe.

Btw, am citit ce scrie mai sus, daca inca te intereseaza JS & MS SQL am ceva experienta cu asta (dar trisez, folosesc jQuery pentru AJAX pentru ca e mult mai scurt ca sintaxa) insa cu ceva C# sau PHP server side. Conexiunea la DB e foarte rapida pentru ca e reutilizabila (intre server-side script si SQL), in functie de ce folosesti in backend si cum il configurezi. Daca zici ca e MS SQL server banuiesc ca e Windows, cu PHP & FastCGI performanta e mai mult decat decenta, cu C# cica ar fi cea mai buna posibila fara sa dai in C si inline assembler. La C# cica ar fi mai rapid .NET Core decat .NET 4.7, dar nu am atata experienta incat sa confirm personal, pentru proiecte proprii oricare din varianta e suficienta.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Location
Brăila
Ca sa fie mai clar:
- Routerul face un log.
- Log-ul este intr-un fisier .txt care, evident, se modifica tot timpul.
- Vreau sa vad .txt-ul ala intr-un browser, fara sa trebuiasca sa intru cu SSH pe router ca sa-l citesc.
- Routerul are un server http, ala care iti afiseaza pagina de configurare a routerului.
- Serverul nu serveste .txt-uri, doar .htm-uri.
- Daca fac symbolic link in directorul serverului catre fisierul .txt si acel symbolic link are nume cu .htm, serverul il trimite catre client, dar browser-ul crede ca-i HTML si il afiseaza neformatat. Toate liniile noi dispar; totul e un text continuu pe o singura linie.
- Pot sa creez .htm static in acel director. HTML-ul poate contine orice, inclusiv .txt-ul de afisat, dar este static; odata creat nu se modifica decat manual.
- Deci: Cum fac sa afisez continutul unui .txt intr-un fisier .htm fara sa am server-side scripts?

Am incercat iframe cu CSS. Nu merge / nu stiu ce CSS sa scriu astfel incat iframe-ul sa fie afisat ca text, nu HTML.
Nu am incercat inca cu JS / XMLHttpRequest care sa downlodeze textul si sa il reformateze cu <br> in loc de linii noi. As prefera din CSS daca se poate.
 

puterfixer

Administrator
Sugar daddy
Joined
Oct 30, 2003
Deci, 1) fișierul tău are nevoie de formatare ca să fie corect afișat, și 2) pe „server” nu ai posibilitatea de a rula nimic care să facă formatarea pentru browser. Deci cam singura variantă îți rămâne să faci parsarea și afișarea client-side, cu JS. Încarci un fișier HTML care conține un JS (inline sau cu referință undeva pe net, că serverul web nu poate livra altceva decât .html) care face conectare asincronă spre symlink-ul fișierului text, îl parsează și-l afișează formatat corect pentru ca browserul să-l înțeleagă.
 
Top Bottom