Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  'JSON.parse' probleem märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele 1, 2  järgmine
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 25.02.2012 05:05:35 'JSON.parse' probleem vasta tsitaadiga

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
icon_rolleyes.gif
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 69
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Timukas0
HV kasutaja
Timukas0

liitunud: 20.03.2007




sõnum 25.02.2012 12:05:38 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 25.02.2012 15:32:02 vasta tsitaadiga

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 icon_neutral.gif
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 69
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 25.02.2012 18:08:00 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 25.02.2012 19:50:45 vasta tsitaadiga

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 icon_neutral.gif
   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 icon_question.gif
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 69
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
i8080
Kreisi kasutaja
i8080

liitunud: 15.03.2002



Autoriseeritud ID-kaardiga

sõnum 26.02.2012 02:19:35 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 26.02.2012 06:43:54 vasta tsitaadiga

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 doh.gif
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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 26.02.2012 11:33:42 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 26.02.2012 12:52:04 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 26.02.2012 17:24:16 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 26.02.2012 22:54:02 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
DoS
HV veteran
DoS

liitunud: 19.08.2002




sõnum 27.02.2012 00:06:13 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 27.02.2012 00:48:52 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 27.02.2012 01:08:42 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 27.02.2012 02:33:33 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Timukas0
HV kasutaja
Timukas0

liitunud: 20.03.2007




sõnum 27.02.2012 10:41:20 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 27.02.2012 13:07:46 vasta tsitaadiga

Ä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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 27.02.2012 14:44:55 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 27.02.2012 17:42:17 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 27.02.2012 19:38:54 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 27.02.2012 23:41:19 vasta tsitaadiga

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 ... icon_redface.gif

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 icon_redface.gif
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 69
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 01.03.2012 13:22:27 vasta tsitaadiga

debugimiseks kasutage console.log() doh.gif

Unustage ära alertid jmt kola icon_neutral.gif

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 01.03.2012 22:12:11 vasta tsitaadiga

Renka kirjutas:
debugimiseks kasutage console.log() doh.gif
Unustage ära alertid jmt kola icon_neutral.gif

Alertid on selleks, et näha, milline seis antud kohas on - korra juba astusin ämbrisse, vt. eelnevaid postitusi icon_neutral.gif
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 69
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 01.03.2012 22:23:22 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sakunne
HV veteran
sakunne

liitunud: 15.12.2004




sõnum 02.03.2012 15:05:51 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  'JSON.parse' probleem mine lehele 1, 2  järgmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.