Toon posts:

[JS] Serverside var ophalen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen van /13!

Ik hoor eigenlijk bij de buren van /14 maar ik heb een vraagje waar ik echt niet uitkom:

Ik heb een database met hierin alle postcodes + straatnamen van nederland. Nu wil ik graag dat als men een postcode ingeeft er automatisch de straat bijgezocht wordt. Serverside is geen enkel probleem maar ik wil het per se client-side doen. De straatnaam moet in een textbox verschijnen zonder de pagina te refreshen.

Paar opties die ik me bedacht en wel kan maken maar die ik toch niet wil gebruiken:
  1. Alle straatnamen in een array stoppen en meesturen naar de client
    De database bevat ca 601.000 records. Het is natuurlijk geen optie om deze in een array te zetten en even naar de client te versturen.
  2. een image op de server aanmaken met hierop de plaatsnaam die bij de postcode hoort en met een imageswap aanroepen.
    Vind ik geen mooie optie. Ik wil de straatnaam in een textbox hebben
  3. Iframe maken en hierin een pagina aanroepen die vervolgens de straatnaam teruggeeft
    Ik wil geen iframe gebruiken.... ook geen popup trouwens
Serverside maak ik gebruik van PHP en MySQL. Ik geef toe dat ik erg mierenneukerig ben maar ik wil het nu eenmaal zo. Een ding wat me trouwens niet uitmaakt is of het cross-browser ook compaible is.......

Mijn vraag is dus ook:
Is er een mogelijkheid om met javascript op een of andere manier een URL te openen en hieruit wat text te grabben? Of wil ik iets wat niet kan?

Ik weet namelijk niet zo heel veel van Javascript en ik heb nu ongeveer anderhalf uur gezocht en kon niet vinden wat ik wou.

Wie-o-wie kan mij helpen?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:19

crisp

Devver

Pixelated

Ik weet nog wel een 4e mogelijkheid: met javascript kan je namelijk een XML document parsen. Stel dat je een php script maakt dat uit de url de postcode als variabele haalt, en een XML document uitpoept met de straatnaam; bijvoorbeeld:
JavaScript:
1
2
3
4
5
6
7
8
9
10
function getStreetName(postcode) {

  xmlDoc = XmlDocument.create();
  xmlDoc.async = false;
  if (window.netscape) window.netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
  xmlDoc.load('http://www.mydomain.com/streetname.php?postcode='+postcode);

  parseXML();

}


Stel nou dat http://www.mydomain.com/streetname.php?postcode=1337TN de volgende XML terugstuurt:

XML:
1
2
<?xml version="1.0" encoding="ISO-8859-1" ?>
<straatnaam>Tweaker Straat</straatnaam>


Dan wordt je functie parseXML zoiets:

JavaScript:
1
2
3
4
5
6
function parseXML() {

  var straatnaam = xmlDoc.getElementsByTagName('straatnaam').item(0).childNodes.item(0).nodeValue;
  document.forms['formulier'].elements['tekstveldje'].value = straatnaam;

}


Ik heb in de GoT Tracker een crossbrowser XML loader zitten waar bovenstaande gebruik van maakt; dit werkt niet zonder meer in NS/Mozilla omdat dan een aantal wijzigingen client-side moeten worden aangebracht in de security-settings; in IE werkt dit zondermeer.

Intentionally left blank


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
gebruik gewoon een popupje, doe ik ook en werkt perfect
ik heb het zelfs zo gedaan dat als je iemands unieke nummer invult, dat ie dan door een onchange een popupje opent met in de url het unieke nummer (....php?id=1 zeg maar)
dat popupje spreekt de database aan, haalt de gegevens op, smijt ze weer terug in het formulier en sluit zichzelf af. Als je een beetje goede verbinding heb merk je daar practisch niets van. Dat is mijn ervaring tenminste
Een andere mogelijkheid is inderdaad om een frame te gebruiken. Je zou onderaan ofzo een frame van 0 hoog kunnen maken, dan zie je er niets van

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
marty schreef op 15 oktober 2002 @ 00:51:
gebruik gewoon een popupje, doe ik ook en werkt perfect
ik heb het zelfs zo gedaan dat als je iemands unieke nummer invult, dat ie dan door een onchange een popupje opent met in de url het unieke nummer (....php?id=1 zeg maar)
dat popupje spreekt de database aan, haalt de gegevens op, smijt ze weer terug in het formulier en sluit zichzelf af. Als je een beetje goede verbinding heb merk je daar practisch niets van. Dat is mijn ervaring tenminste
Een andere mogelijkheid is inderdaad om een frame te gebruiken. Je zou onderaan ofzo een frame van 0 hoog kunnen maken, dan zie je er niets van
*zucht* lezen is ook een vak hè? hij wil géééén popups! En hoewel een hidden iframe hiervoor ook een mooie oplossing zou zijn, hoef je daar dus ook niet mee te komen :P

Verwijderd

Je zou de XML/RPC api van Virtual Cowboys kunnen proberen...
http://www.vcdn.org/Public/XMLRPC/
Die maakt geen gebruik van popups of iframes maar van ingebouwde XML-requests in IE en Mozilla.

Verwijderd

Verwijderd schreef op 14 oktober 2002 @ 23:56:
Mijn vraag is dus ook:
Is er een mogelijkheid om met javascript op een of andere manier een URL te openen en hieruit wat text te grabben? Of wil ik iets wat niet kan?
Iets minder uitgebreid zijn de file-load functies van Scott Andrew:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// readFile
// retrieves the contents of a local file as a JS string.
// NS4 requires Java enabled.
// Works in Mozilla 0.9.5 +

function readFile(url) {
    var req;
    if (document.all) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (netscape) {
        if (document.getElementById) {
            req = new XMLHttpRequest();
        }
        else {
            req = new NS4HttpRequest();
        }
    }
    req.open("GET",url,false);
    req.send(null);
    return req.responseText;
}

function NS4HttpRequest() {
    this.url = "";
    this.responseText = "";
}
NS4HttpRequest.prototype.open = function(method,url) {
    this.url = url;
    this.method = method||get;
}
NS4HttpRequest.prototype.send = function() {
    // thank you Mr. Pemberton
    if (this.url=="") return false;
    var line,buffer;
    this.responseText = "";
    buffer = new java.io.BufferedReader(new 
java.io.InputStreamReader(new java.net.URL(this.url).openStream()));
    while ((line = buffer.readLine())!=null) this.responseText+=line + "\n";
    if (buffer!=null) buffer.close();
    return true;
}

In principe kun je hier elk ascii bestandje mee lezen op de server volgens mij...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:19

crisp

Devver

Pixelated

Verwijderd schreef op 15 oktober 2002 @ 13:01:
Je zou de XML/RPC api van Virtual Cowboys kunnen proberen...
http://www.vcdn.org/Public/XMLRPC/
Die maakt geen gebruik van popups of iframes maar van ingebouwde XML-requests in IE en Mozilla.
Da's volgens mij ongeveer hetzelfde als wat ik hierboven al suggereerde.
In plaatst van xmlDOM kan je misschien zelfs beter xmlHTTP gebruiken (ik wist eigenlijk het verschil niet precies, maar geloof dat ik het nu wel snap)

Intentionally left blank


Verwijderd

gebruik gewoon een popupje, doe ik ook en werkt perfect
ik heb het zelfs zo gedaan dat als je iemands unieke nummer invult, dat ie dan door een onchange een popupje opent met in de url het unieke nummer (....php?id=1 zeg maar)
dat popupje spreekt de database aan, haalt de gegevens op, smijt ze weer terug in het formulier en sluit zichzelf af.
Of gewoon een Iframe, Ilayer of layer gebruiken met visibility=hidden en visibility=hide :)

Verwijderd

De XML methode is de mooiste! Maar er zijn er nog meer. Java, Flash etc.

Verwijderd

Ik weet nog een 5-de oplossing: "javascript data-islands".
In je HTML staat dan zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<script language="javascript" type="text/javascript" src="" id="postcodeLookup"></script>
<script language="javascript">
function lookupCallback(result)
{
  alert(result)
}
function lookup(strPC)
{
  var o=document.getElementById('postcodeLookup');
  o.src="pcLookup.asp?pc='+strPC+'&callback=lookupCallback';
}
</script>

En de pcLookup.asp ziet er dan als volgt uit:
code:
1
2
3
4
5
6
7
Dim s, t, callBack
s=Request.QueryString("pc");
callBack=Request.QueryString("callBack")
'...pc opzoeken en in <t> wegschrijven
Response.ContentType="text/javascript";
Response.Write callBack & "('" & t & "');"
Response.End

Dit heb ik overigens uit de losse pols geklopt, dus het er staan vast wat fouten in...

Verwijderd

Topicstarter
crisp schreef op 15 oktober 2002 @ 00:33:
Ik weet nog wel een 4e mogelijkheid: met javascript kan je namelijk een XML document parsen. Stel dat je een php script maakt dat uit de url de postcode als variabele haalt, en een XML document uitpoept met de straatnaam.
Ik heb het geprobeerd, helaas kreeg ik die XmlDocument niet aan de gang. Zoals ik al zei ben ik een prutser op het gebied van Javascript. Na enig zoekwerk kwam ik er achter det je dus wel een library nodig had maar ook daarmee lukte het niet. Het zou wel een perfecte oplossing zijn als ik meerdere veljes terug zou moeten geven. Thanx! _/-\o_
marty schreef op 15 oktober 2002 @ 00:51:
gebruik gewoon een popupje
.... zoals HunterPro dus al zei :) :+
Verwijderd schreef op 15 oktober 2002 @ 13:08:
Iets minder uitgebreid zijn de file-load functies van Scott AndrewIn principe kun je hier elk ascii bestandje mee lezen op de server volgens mij...
Volgens mij ook want het werkt als een tierelier! Thanx! _/-\o_

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik gebruik altijd (heel vaak al) een iframe met style='display:"none";'
Dat werkt als een tiet

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op de Apple site staat trouwens een voorbeeld van Javascript Remote Scripting wat eigenlijk precies is wat jij wilt :)
To help you see the possibilities that Remote Scripting affords you the developer, I've worked up one final example that loads data from a database of static HTML files.

Once a state has been selected, the multiple select list below will be populated with a partial list of ZIP code names drawn from a database of html files that are loaded via a hidden IFRAME.
Remote Scripting with IFRAME

HTH :)

"You're only as good, as what you did last week."

Pagina: 1