Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
sakunne
HV veteran

liitunud: 15.12.2004
|
25.02.2012 05:05:35
'JSON.parse' probleem |
|
|
Kui ma:
var vastusStr = ("'" + xmlhttp.responseText + "'");
document.write(vastusStr);
var vastus = JSON.parse(siia pasteerin document.write'ga saadud stringi); |
St. kopin brauserist stringi ja pasteerin otse koodi, siis parseb ilusti.
Kui ma aga:
var vastusStr = ("'" + xmlhttp.responseText + "'");
var vastus = JSON.parse(vastusStr); |
... siis ei tee piuksugi
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
25.02.2012 12:05:38
|
|
|
Kui ta sul juba string on, siis pole jutumärke vaja ümber panna: var vastus = JSON.parse(xmlhttp.responseText);.
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
25.02.2012 15:32:02
|
|
|
Timukas0 kirjutas: |
Kui ta sul juba string on, siis pole jutumärke vaja ümber panna: var vastus = JSON.parse(xmlhttp.responseText);. |
Olen ka seda proovinud, ikka mitte midagi
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
25.02.2012 18:08:00
|
|
|
Esmalt proovi, kas sul xmlhttp.responseText üldse olemas on. Tee alert(xmlhttp.responseText) või midagi.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
25.02.2012 19:50:45
|
|
|
andrusny kirjutas: |
Esmalt proovi, kas sul xmlhttp.responseText üldse olemas on. Tee või midagi. |
Krt, ma tegin nii - vt. esimene post, esimene näide
var vastusStr = (xmlhttp.responseText);
document.write(vastusStr); |
... kui ma selle document.write(vastusStr) kopisin brauserist ja kleepisin otse koodi JSON.parse(...), siis kõik toimis, aga - och mind turakat - alert(xmlhttp.responseText) näitab, et tegu on veebilehe source'ga - kõik päised-jalused, ning body tagis vajalik string.
EDIT: oot-oot, kuidas ma selle body tag'ist kätte saan, elegantseim viis oleks kohe saada ainult body tag'i sisu
mul on:
xmlhttp=new XMLHttpRequest();
}
else
{// IE6, IE5 jaoks
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} |
JSONP äkki
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
i8080
Kreisi kasutaja

liitunud: 15.03.2002
|
26.02.2012 02:19:35
|
|
|
tee otse päring brauseri aadressiribal sellele aadressile, kust seda jsonit välja pritsitakse.
vaata, mis sisu seal on.
ideaalis peaks kogu response olema midagi taolist:
{"blaah": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ]}
vajadusel, modi header osa ja content-type pane "application/json; charset=utf-8" või proovi "text/x-json"
ja vaata, et kuskil ei pandaks sinna ümber seda tavalist html jura nagu <!doctype ..><html><body></body></html>
|
|
Kommentaarid: 169 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
26.02.2012 06:43:54
|
|
|
i8080 kirjutas: |
... ja vaata, et kuskil ei pandaks sinna ümber seda tavalist html jura nagu <!doctype ..><html><body></body></html> |
Vot see ongi, et seal se jura on: xmlhttp.responseText on veebilehe source, mille body ongi vajalik JSON.
Kuidagi peaks selle sealt kätte saama:
var vastusStr = ??? .getElementsByTagName('body').innerHTML |
kuhugi sinna peaks istutama vb.
EDIT: lahendasin asja substring( ...), ega ta eriti elegantne lahendus pole, a'ajab asja ära
Ja ikkagi oleks vaja sellist meetodit, kuhu suvalise source sisse laadimisel, saab mingi tag'i kätte
viimati muutis sakunne 26.02.2012 11:59:01, muudetud 2 korda |
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
26.02.2012 11:33:42
|
|
|
Palu kellelgi regular avaldis teha omale, mis selle välja võtab, ei tohiks mingi keeruline asi olla, kui asja valdab.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
26.02.2012 12:52:04
|
|
|
andrusny kirjutas: |
Palu kellelgi regular avaldis teha omale, mis selle välja võtab, ei tohiks mingi keeruline asi olla, kui asja valdab. |
Nagu öeldud tegin asja ära,
sourceStr.substring(sourceStr.search('<body>') + 6, sourceStr.search('</body>')) |
kuigi, nagu samuti öeldud, pole see kõige elegantsem lahendus, kuid asi toimib, nüüd on vaja ta kuidagi lehel õigesse kohta panna
var vastus = (JSON.parse(vastusStr));
for (i=1; i<=13; i++) {
address = vastus[i]['fulladdress']
kat = vastus[i]['kat'] |
... kuidas seda peaks tegema
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
26.02.2012 17:24:16
|
|
|
tsitaat: |
Nagu öeldud tegin asja ära, |
Ma räägin regular avaldisest, midagi sellist
var txt = '<html>veel mingi <title><body>tere ise ka</body> ja lopp ka</html>';
var matches = txt.match(/<body>(.*?)<\/body>/);
alert(matches[1]); |
Edit: kustutasin eelnevad koodid, see viimane peaks nüüd sobima
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
26.02.2012 22:54:02
|
|
|
See annab tulemuseks 'null', uurin asja:
http://www.therm.ee/_thermnet/kaart/ajax_query.html
Mina proovisin getElamentByTagName'ga teha, sellega saab konkreetsel lehel teha küll, a'sellist võimalust ei leidnud, kus ühel lehel teiselehe souce'i sisestades tag'i sisu kätte saaks.
Praegu on vaja ta kuidagi lehel õigesse kohta panna
var vastus = (JSON.parse(vastusStr));
for (i=1; i<=13; i++) {
address = vastus[i]['fulladdress']
kat = vastus[i]['kat'] |
... kuidas seda oleks tark teha
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
27.02.2012 00:06:13
|
|
|
sakunne kirjutas: |
... kuidas seda oleks tark teha |
tark oleks serveri poolt html tage mitte juurde toppida
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
27.02.2012 00:48:52
|
|
|
DoS kirjutas: |
sakunne kirjutas: |
... kuidas seda oleks tark teha |
tark oleks serveri poolt html tage mitte juurde toppida |
Pole minu teha, palegi sain nendest lahti - asi täitsa töötab - serverist tuleb JSON script, lehele saada ainult.
ilmselt tuleb kasutada getElementById + getElementByTagName + array
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
27.02.2012 01:08:42
|
|
|
tsitaat: |
ilmselt tuleb kasutada getElementById + getElementByTagName + array |
see lahendus eeldab, et esmalt sa paned kogu selle lehe kuhugi display:none div sisse ja sealt seest otsid tag name abil, töötab, kuid pole just lehe kasutuse suhtes optimaalne vist.
tsitaat: |
See annab tulemuseks 'null' |
miks? Kui sinna sisse tuleb body tagidega normaalne html, siis peaks ju andma tagide vahelise osa vähemasti see lühike näide küll tegi seda
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
27.02.2012 02:33:33
|
|
|
andrusny kirjutas: |
tsitaat: |
ilmselt tuleb kasutada getElementById + getElementByTagName + array |
see lahendus eeldab, et esmalt sa paned kogu selle lehe kuhugi display:none div sisse ja sealt seest otsid tag name abil, töötab, kuid pole just lehe kasutuse suhtes optimaalne vist. |
Teisiti ei anna vist teha, document.write annab sellise tulemuse, funktsioon jookseb 'onkeyup' a'see kirjutab lehe üle kohe:
http://www.therm.ee/_thermnet/kaart/ajax_queryHV.html
Seega ei sobi, vaja on vastused saada vastuste kohale
tsitaat: |
See annab tulemuseks 'null' |
tsitaat: |
miks? Kui sinna sisse tuleb body tagidega normaalne html, siis peaks ju andma tagide vahelise osa vähemasti see lühike näide küll tegi seda |
Ehheee seal on 2 alerti, esimene näitab kogu stringi, teine mach annab null
http://www.therm.ee/_thermnet/kaart/ajax_query.html
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
27.02.2012 10:41:20
|
|
|
andrusny vastus eeldab, et kogu string on ühel real, aga sul ei ole. Kasuta hoopis sellist regulaaravaldist: /<body>([\s\S]*)<\/body>/
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
27.02.2012 13:07:46
|
|
|
Äkki oleks mõistlik kasutada vahe lehte. Teed php peale lehe, mis võtab faili sisse, kasutab regulaar avaldist, et see puhastada üleliigsest sodist ja tagastab sulle puhta JSON i, AJAX päringu teed selle vahe faili peale.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
27.02.2012 14:44:55
|
|
|
See kõik on olemas - JSON tuleb ja parserdatakse ka: http://www.therm.ee/_thermnet/kaart/ajax_queryHV.html
Nüüd on vaja see parserdus õigesse kohta saada, antud juhul kasutan 'document.write(...)', a'nagu öeldud see kirjutab kõik üle, oleks vaja, et see otsingukast jääks näha ja selle alla parserdus.
Iga uue tähe sisestamisel uus AJAX pärig, toob kitsendatud andmetele tugineva parserduse ... jne ...
_________________ Kuna ei pruugi õigel ajal foorumisse sattuda:
SMS: 5051598 [võõraid tel. ei vasta]
Email sakunne@seenior.ee |
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
27.02.2012 17:42:17
|
|
|
Vaadates su koodi - esiteks ära leiuta jalgratast. Kogu see XMLHttpRequestiga majandamine on puhas pornograafia, kui sul jQuery teek nii ehk nii kasutusel on. Vaata näiteks http://api.jquery.com/jQuery.getJSON/
Teiseks - document.write peabki kogu dokumendi sisu üle kirjutama, muuks ta mõeldud ei olegi. Vaata parem, kuidas jQuery'ga valutult oma probleemi lahendatud saad - http://api.jquery.com/html/ - uuri alumist otsa, kus uue sisu andmist kirjeldatud on.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
27.02.2012 19:38:54
|
|
|
tsitaat: |
See kõik on olemas |
Kui sul juba see vaheleht on, miks sa siis seal ei kõrvalda sissetuleva html päiseid ja ei eralda body´s olevat osa vaid saadad kogu html lehe edasi pealehele kus hakkad tervet lehte eraldi div sees läbi nokkima?
getJSON eeldab vist ikkagi, et talle JSON formaat sealt tuleb, kuid niipalju kui ma teemast aru olen saanud tal ei tulegi puhas JSON vaid mingi HTML kompott, millest vaja JSON eraldada
võid ka puhtas JS kirjutada div sisse
var sinuDiv = document.getElementById('sinuDiv');
sinuDiv.innerHTML=Lehesisu;
|
Edit: ma siin proovisin ja tundub, et kui paned terve veebilehe andmed käsuga innerHTML kuhugi elemendi sisse, korjab see ise ära sealt html päise ja body tagid, kui see nüüd mingi IE erand pole, siis saad seda kasutada ju, polegi mingit regular avaldist ega muud jama vaja
sinuDIV.innerHTML=data; // data on siis html leht koos päise ja muuga
var JSONdata = sinuDIV.innerHTML; // siin sees on ainult body sisu |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
27.02.2012 23:41:19
|
|
|
Fukiku kirjutas: |
Vaadates su koodi - esiteks ära leiuta jalgratast. Kogu see XMLHttpRequestiga majandamine on puhas pornograafia, kui sul jQuery teek nii ehk nii kasutusel on... |
Pornograafia jah, kasutasin ühete ammust koodi, JQuery panin hiljem külge ... piinlik lugu ...
andrusny kirjutas: |
Kui sul juba see vaheleht on, miks sa siis ... |
Asi selles, et päring tehakse riigiameti serveriss, saadeti url ja vend kirjutas, et ongi JSON, vaatan document.writega, kõik ok ... a'ei parsi ... läks veidi aega, enne, kui taipasin alert'iga vaadata - tegelt sinu soovitusel - ja seal assa rsk mingi veebileht hoopis, kus body' see JSON, sellest ka segadus ... jällegi
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
01.03.2012 13:22:27
|
|
|
debugimiseks kasutage console.log()
Unustage ära alertid jmt kola
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
01.03.2012 22:12:11
|
|
|
Renka kirjutas: |
debugimiseks kasutage console.log()
Unustage ära alertid jmt kola  |
Alertid on selleks, et näha, milline seis antud kohas on - korra juba astusin ämbrisse, vt. eelnevaid postitusi
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
01.03.2012 22:23:22
|
|
|
console.log() on selleks
Ärge harjutage ennast mingeid kaheldava väärtusega meetodeid kasutama.
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
sakunne
HV veteran

liitunud: 15.12.2004
|
02.03.2012 15:05:51
|
|
|
Nüüd töötab enamvahem nii nagu vaja, asi oligi lihtsam, kui arvasin, lihtsalt ei tulnud sellele:
http://www.therm.ee/_thermnet/kaart/ajax_queryHV.html
Muidugi, 'pornograafia', nagu Fukiku seda nimetab, peaks ära koristama, a'enne peaks vaatama, kuidas koodi varjata
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
69 |
|
tagasi üles |
|
 |
|