-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
BÚÉK!
"úgy, hogy a .button és a .buttonGroup css-hez nem nyúlhatok"
Hogy érted, hogy nem nyúlhatsz hozzá, ha HTML-ben adhatsz hozzá elemeket, meg CSS-sel formázhatod az új markupot?Egyáltalán ez hogy jön a JavaScript topichoz?
Az sem ártana, ha calss helyett class-t írtál volna.http://prohardver.hu/tema/css_megjelenitesi_problemak/friss.html
-
fordfairlane
veterán
Az ID-k jó lenne, ha szabványosak lennének, azaz betűvel kezdődnének. Böngészője válogatja, melyik mennyire érzékeny erre.
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
-
Sk8erPeter
nagyúr
De most itt hol látsz olyan bugot, amiről beszélsz?
http://jsfiddle.net/Sk8erPeter/jJaLB/1/
csak mert ha nem tudod reprodukálni a hibát, amiről szó van, úgy elég nehéz lesz debuggolni is.
Nem tudom elképzelni, konkrétan hogyan néz ki a kódotok (még mielőtt megint megtennéd, nem kell említeni, hogy hány 0 van a projektben, mert nem érdekel senkit, ahogy ha megosztasz pár plusz részletet a kódodból, akkor sem fogja tudni reprodukálni az eredeti projektet senki), nem gányolástól merül-e fel a probléma, amit említesz.
Mutass olyan esetet, ahol előfordul a hiba, és akkor esélyes, hogy tudunk segíteni érdemben is. És ne minket hibáztass, ha nem tudjuk reprodukálni a hibáitokat. -
Sk8erPeter
nagyúr
Nem ártana, ha legalább szintaktikailag helyes lenne a kódod.
Te ezt írtad:
<div id="base">
<tr>
</tr>
</div>
De a table-t kihagytad.... ez így nem is fog működni helyesen.<div id="base">
<table>
<tr>
</tr>
</table>
</div>
így már kezdetnek jó... meg hogy meg lehessen különböztetni, nem árt jól elkészíteni a példát
Például hogy legyen valami háttere, ilyesmik.
Na, szóval itt nem az általad elvártak szerint működik?
http://jsfiddle.net/Sk8erPeter/jJaLB/1/
Szerk.: na, elkéstem, mert próbáltam kihozni valami értelmeset a dologból...
-
Sk8erPeter
nagyúr
mert ma mi történt? Megkaptál egy 0-t a munkád eredményéből? Vagyis 0 Ft-ot hozzádvágtak?
Egyébként jó, hogy elbeszélgetünk a semmiről, hogy nem tudtad megoldani.
Mármint számomra semmi, mert semmit nem osztottál meg róla, hogy konkrétan mi a baj a kódoddal.
Ja, de. $('#000'), csak hogy jelezd, hogy sok a 0 a projektedben (n+1-edszer) -
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Annyira nem furcsa mivel CSS3-as dologról beszélsz...
Nem minden böngésző támogatja ezeket. Bár elvileg az aktuális nagyobb böngészőknek kellene támogatniuk.
http://www.w3schools.com/cssref/tryit.asp?filename=trycss3_text-overflow
itt tudsz vele játszani -
Sk8erPeter
nagyúr
Miért erőlteted ezt az "index" szót?
Szerintem te a függvény argumentumára vagy paraméterére gondolsz, ezt nem úgy hívják, hogy "index".
"mind a tíz oszlopra van egyesével egy qrva nagy onclick, és szintén qrva nagy hover fv, úgy, hogy $oszlop1.onclick(...), $oszlop2.onclick(...) stb, tehát ugyanaz a kód háromnegyede, az indexektől eltekintve.
[...]
Most csak az "egy indexes bind" kell milyen szép szakkifejezés, aminél egy for ciklusba rakok egy onclick-et, és egy hover-t"Erről beszéltem korábban, hogy értelmesebb lenne hozzáadni az elemekhez egy-egy közös class-t, mint hogy for ciklusokba pakolt eseménykezelőkkel szopasd magadat... miért csodálkozol, hogy előfordult a korábbi probléma, hogy duplán futott le az az eseménykezelő is, aminek nem szabadott volna? Már önmagában a leírásaid is azt tükrözik, hogy valamiért itt tákolás történik gányolás hátán.
Az sem egészen világos, most miért láttál ekkora potenciált a plain JS-es .bind()-ban, miért akarod most mindenáron ezt alkalmazni, amikor enélkül is nyugodtan lehet paramétereket passzolgatni. Adott esetben indokolt lehet, de nem mindig.Amiről korábban írtam, az az, hogy lehetne közös csoportként kezelni az elemeket, ha lenne közös class-uk, arra az elemre, aminél meg kivételt kell tenni, megint egy másik class-t kell tenni, és akkor rohadt könnyen tudod kezelni őket, óriási kódok ismételgetése nélkül (pfuj).
Na, mondjuk mutatok egy példát, ahol a .group1 class-szal rendelkező elemek mindegyikén van egy .hover(), és mindegyikre alkalmazva van egy explode effect, kivéve azokat, amik meg vannak jelölve a kivételt jelentő group1-exception osztállyal (amik itt a példámban a fekete bárányok):
http://jsfiddle.net/Sk8erPeter/GVy7b/
Az elv a lényeg, hogy csoportokra írok event handlereket, nem egyenként.
-
Sk8erPeter
nagyúr
Hát pedig a doksi elolvasása és felfogása a legtöbb esetben rövidebb ideig tart, mint megírni két-három értetlenkedő hsz.-t.
Na várjál, azért ne ess át a ló túloldalára, senki nem mondta, hogy a plain JavaScriptes .bind() alkalmazása a jó módszer argumentumok függvénynek történő átadására!! Ez most csak egy példa volt, ez nem azt jelenti, hogy így is kell mindig alkalmazni, teljesen esetfüggő, mikor jó ennek a használata. Azért most ne kezdj el izomból, gondolkodás nélkül átírogatni mindent...
-
sztanozs
veterán
Jaja, Ballmer Peak
És még be is bizonyították
-
Sk8erPeter
nagyúr
Nem értem, pontosan mit szeretnél, de te szoktál egyébként egyáltalán valaha dokumentációt olvasgatni?
Most komolyan, ne vedd bántásnak, de nem úgy néz ki, mintha nem teljesen a fórumra bíznád magad...https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
Syntax
fun.bind(thisArg[, arg1[, arg2[, ...]]])
Parameters
thisArg
The value to be passed as the this parameter to the target function when the bound function is called. The value is ignored if the bound function is constructed using the new operator.
arg1, arg2, ...
Arguments to prepend to arguments provided to the bound function when invoking the target function.Itt van egy totál értelmetlen változata annak, amit korábban Karma belinkelt, átadva a "kiskutya" stringet annak a bizonyos függvénynek:
-
Sk8erPeter
nagyúr
"az a baj, hogy ezzel a counterrel csak "egyszer" fut le, de duplán. úgymond többször már nem, de először mindig duplán."
Hogyan írtad meg a kódot?
Egyébként azt látod, hogy a jsFiddle-kód helyesen működik, ugye?Az alkalmazásról meg semmit nem tudunk (csak azt, amit már sokszor elmondtál, hogy sok a 0 a végén, és helyetted kódolunk
), nem lehet, hogy az eseménykezelő valamiért kétszer van megírva?
Nem valami olyan függvényen belülre került ez az eseménykezelő (a mouseoveres rész), ami a betöltődés után kétszer is meghívódik?
Abból kiindulva, ahogy itt is akartad megírni az eseménykezelőt...===============
Szerk.:
(#3061) sztanozs :
ez qrva jó!A kérdést igazából el sem olvastam, csak odáig, hogy System.out.println, aztán tovább sem mentem, de most megnéztem, hát ez óriási
Az a baj, hogy abból kiindulva, hogy ráadásul a JavaScript topicba írt Java-kérdést, nem is igazán érdekli a dolog, csak muszájból tanulja, vagy nem vágom. -
Sk8erPeter
nagyúr
Bocsi, de ez a kód elég nagy hülyeség.
Amúgy ennél kényelmetlenebbül és csúnyábban tesztelhető módszert nehéz lett volna kitalálni, mint ahogy felraktad jsFiddle-re.Figyeld, most ez 3 percembe került, miután letöltöttem IconFinderről két ikont:
Szerintem valami olyasmi is benne lehet a dologban nálad, hogy nincs meghatározva az egzakt szélesség/magasság, és az egér fölévitele során a tököm tudja miért duplázódik. Na most ezt jól megaszondtam, mi?
-
Karma
félisten
Ehöm, miért az almától függ, hogy a mouseentert hozzáfűzöd-e vagy sem? Csakmert ha ez a kódrészlet kétszer meghívódik, akkor kétszer lesz odafűzve a handler... Ezt egyébként egy breakpointtal seperc alatt ellenőrizheted.
Nem biztos hogy ez a hiba, csak bűzlik - elég gyakori hiba hogy egy kifordított feltétel miatt nem egészen az történik, mint amit szeretnél. Event handlert csak egyszer, tisztán elkülönítve regisztrálj.
-
Sk8erPeter
nagyúr
fú öcccsém, nem szeretnék a kódjaitokkal dolgozni...
Tákolás tákolás hátán.
Miért nem mondod meg azoknak a rendkívül okos fejlesztőknek, akik körbevesznek, hogy adjanak már valami normális, KÖZÖS class-t az érintett elemeknek (magyarul nyúljanak bele egy picit a HTML-be, és toljanak bele plusz egy osztályt), és ne játsszák már a hozzáértőt? Miért kell ilyen gányul megoldani? Gondolom ha azt javasolnád, hogy ugyan rakjunk már rá még egy class-t, csak hogy általánosabb megoldásokat is lehessen ezekre az elemekre alkalmazni, akkor is azt mondanák, hogy megint túlbonyolítod a dolgokat...
Megoldható az, hogy egy ciklussal végigmész a doksin, és megkeresed az összes "item" class-szal kezdődő nevű elemet, meg hogy van-e mögöttük szám, és rákötsz egy handlert, de az elképesztő erőforrás-igényes és oltári gány lenne.Vagy most ahogy Karma kérdezi, ez megint csak egy ilyen rendkívül fantáziadús példa volt a részedről?
Nyomass már fel egy példát jsFiddle-re megint, mert így csak szemeteljük a topicot a sok-sok visszakérdezéssel. -
Sk8erPeter
nagyúr
Most komolyan ezt javasolták?
Akkor jó nagy f@szokkal lehetsz körülvéve (akkorák, hogy már b@szni lehet velük), ha ezt a módszert jobbnak tekintik, és szerintük ez így nem jó...
Megjegyzem azt is, hogy ez pont nem a túlbonyolítása a dolgoknak, amit mutattam, hanem egyszerű, rugalmas és átlátható módja az elemek hozzáadásának (így tök egyszerűen adhatsz hozzá újabb attribútumokat, meg sokkal olvashatóbb a kód, mint az egybeb@szott stringekkel). Én biztos jól elküldeném őket a p×csába, ha nekem mondanák azt, hogy ez túlbonyolítás.
Bocs, csak felcseszik az agyamat az ilyen önjelölt degenerált programozózsenik. -
Sk8erPeter
nagyúr
"ha az egyiket pár pixellel odébb akarta rakni a fejlesztő (grafikus), akkor berakott elé egy pár pixeles üres divet"
Az igen.paddingről meg marginról nem hallott? Bár ha látnánk, miről van szó, könnyebb lenne okoskodni, de most ennyiből úgy érzem, elég fura megoldásokat alkalmaz a csávó.
A többire: pont azt mondtam, hogy <ul> meg <li> helyett azt írsz oda, amit akarsz, ez a rendes, listás változat csak egy példa volt. Az meg a másik, hogy ennek a listának a stílusa is felülbírálható... meg ugye egy rendes listához azért szerintem illik <ul> vagy valami táblázatos megoldást használni, feladattól függően, szemantikailag úgy logikus, nem a sima dives megoldás, ami a struktúrájáról nulla információt ad.
Itt eléggé látszik, hogy milyen rugalmasan alakítható a dolog:
http://jsfiddle.net/Sk8erPeter/8CDGv/8/
Most div a listaelem szülője, az elemei szintén divek, aztán belepakolok spaneket... mondom, úgy kombinálod, ahogy akarod...
De tulajdonképpen nem nagyon értem az aggályaidat, mert hogy mit írj át mire, az elég alapvető dolog, szóval ezekkel nem tudom, miért akadsz el. -
Sk8erPeter
nagyúr
Nem véletlenül mondtam, hogy térj vissza a HTML- és CSS-alapokhoz.
Te most nem csak egy listát szeretnél kiíratni?
Azért többszöröződnek az elemek, mert minden alkalommal minden .c osztállyal rendelkező elemhez hozzáadod újból a listaelemeket.
Most kb. 2 perc volt átírnom úgy, hogy normális elnevezést kapjanak a HTML-elemek ÉS a változónevek is, próbáld ezt meg majd a jövőben Te is valahogy így csinálni:http://jsfiddle.net/Sk8erPeter/8CDGv/7/
"Nekem az kellene, h alma, körte, dinnye jelenjen meg csak."
Milyen szabály szerint? Kell valami általános rá, hogy például csak a tömbök feléig szeretnél kiíratni, vagy csak konkrétan az legyen, hogy a 2. indexig fusson (0-tól)?
Mert akkor egyszerűen elég a for ciklusnál annyi is, hogy i < 3 && i < fruitsArray.length;
Azért van az &&, hogy "biztonságos" legyen, hogy ha kisebb a tömb 3-nál, akkor se legyen túlindexelés. -
Karma
félisten
Amikor a HTML kódban írod a div ID-jét, ne tegyél oda #-ot.
És tényleg találj ki valami értelmesebb elnevezést ezeknél pls.
-
Sk8erPeter
nagyúr
Minek jelszó?
Teljesen anonim módon is fel lehet dobálni kódokat, tök felesleges bejelentkezni ilyen miatt.
Egyébként beleraktam az előző hsz.-be még pár plusz infót."pont nem szopatás, mert könnyű leírni."
Remélem, ez csak vicc volt.
Könnyű leírni, aztán olvasni+értelmezni lehetetlen. Neked is, másnak meg főleg. -
Sk8erPeter
nagyúr
Miért szopatod magadat meg minket ilyen fantáziadús nevekkel, mint "1", "2", "3", meg "a", "b", "c"?
Ha valaki megnézi a kódjaidat, nem szokott könnyekben kitörni?
Inkább legyen 100 karakteres a változóneved, mint hogy ilyen tök érthetetlen neveket használj.
Meg rakj már fel légy szíves jsbinre vagy jsFiddle-re egy példát, mert ne nekem/nekünk kelljen már ezzel időt tölteni plíz.i<array
ez így nem fog menni, legfeljebb i<array.lengtharray(i)
ez így szintaktikailag hibás, legfeljebb array[i]
de NE használj ilyen neveket, mint array meg hasonlók, mert egyrészt ez is totál nem mond semmit, hogy konkrétan melyik tömbről van szó, meg elnevezésben nagyon hasonló a nyelvi lefoglalt "Array" kulcsszóra. Ergo teljesen félrevezető. -
Sk8erPeter
nagyúr
Miért ne lehetne már divet hozzáadni?
$(document).ready(function(){
$('<div />', {
'class': 'akármi-osztály',
'id': 'valami-azonosító',
'text': 'asdasd',
'style':'color:red'
}).appendTo('#foo');
});http://jsbin.com/esapog/2/edit
Egészségedre.
(mármint a sört)
-
Sk8erPeter
nagyúr
"azt hogy tudom megcsinálni, hogy scriptből nyissak meg oldalt? mert ha pl megváltoztatom scriptből egy gomb href értéket, akkor az csak akkor nyitja meg a kívánt ablakot, ha rábökök."
Hogy kell elképzelni ezeket az "ablakokat"? Milyen ablakokról beszélsz, böngészőbeliekről, vagy egy modal dialog-szerű valamiről? -
Sk8erPeter
nagyúr
"második gondolatom az volt, hogy minden id-t hozzáadok egy stringhez, majd megnézem, hogy az aktuális elem id-je substringje-e, mert ha igen, akkor lehet összehasonlítani, de gondolom a substring fv is valami ciklussal működik, tehát elvileg az is kiesett."
Hát ez elég kemény, ettől a gondolatmenettől kicsit kirázott a hideg... de már az is meglep, hogy valakinek egyáltalán ilyen megoldás eszébe jut.Okádék megoldások közül is legokádékabb lenne.
Egyébként jó lenne tudni kicsit pontosabb infókat azonkívül, hogy localStorage-ből és szerverről kapott array-eket össze akarsz "fésülni": ha jól értem, localStorage-ben mondjuk valami számunkra ismeretlen régebbi adatok vannak dátummal, aztán jön a szerverről azonos id-vel egy másik dátummal valami másik, újabb adat (vagy fordítva, végül is mindegy). Az lenne a fontos, hogy mit szeretnél megtartani: mindkettőt, vagy "felülírható" valamelyik, és egyáltalán milyen formában szeretnéd tárolni mondjuk egy harmadik, "összefésült" tömbben. A feladat körülbelüli ismerete azért érdekes, hogy érdemi tanácsot tudjunk adni.
===========
(#2876) CSorBA : az igen hasznos tud lenni, amikor az ember kérdezés előtt inkább kipróbálja.
-
v2izzy
tag
Kedvet kaptam a problémához és ha jól értelmezem akkor egy ilyen függvényre gondoltál? Ez high-order megoldás szóval majd te írd meg hozzá az összehasonlító függvényt. (a linkelt példában amúgy azt teszteltem, amit te írtál)
Ja és a sorrend az megváltozik, de szerintem az nem nagy gond, de ha mégis meg lehet oldani.
-
Sk8erPeter
nagyúr
Elmondanád, hogy mit művelsz itt a kódodban?
Miért nem kreálsz kapásból egy tömböt, és kész?
Pl.:var ezANagyonFaszaTombod = new Array();
ezANagyonFaszaTombod.push({id: 123, date: '2012-03-14'});
ezANagyonFaszaTombod.push({id: 321, date: '2012-02-11'});
ezANagyonFaszaTombod.push({id: 666, date: '1934-01-02'});Szerk.: ez tehát objektumok tömbje.
-
Sk8erPeter
nagyúr
Hát akkor félreérthetően írtál.
(ld. futtatja az index.html, és kész, kliensoldalon legyen annak ellenőrzése, hogy valaki belépett-e, stb.)
"de hozzá kell fűzni, mert onnan tudja a szerver, hogy nem Betörő Pistike próbál adatok kérni, hanem Munkatárs Kamilla."
Hiába erősködsz, akkor sem szokás az URL-hez hozzáfűzni a session id-t. (Pontosítok: csak ELAVULT webalkalmazásoknál volt (remélem, a múlt idő indokolt) szokás.) Csak még könnyebbé teszed annak ellopását. Tökéletes módszer nincs, de ezzel még messzebb kerülsz a tökéletestől. -
Sk8erPeter
nagyúr
Kap session id-t, akkor gondolom csekkolod is a session id-t - tehát csak van szerveroldali kódolás (PHP, ASP.NET, JSF, stb.) a dologban, nem?
Vagy most nem tudod, hogy milyen rendszerben dolgozol?
"először belogol, kap egy session id-t, majd minden get-hez és post-hoz hozzáfűzi"
Ez rossz és felesleges. Ne legyen hozzáfűzve.Már nem is tudlak követni, hogyan oldod meg, hogy a böngésző bezárása után se jelentkeztesse ki a júzert. Cookie-kezelés van?
-
Sk8erPeter
nagyúr
Az érvelésed hibás, mert attól még, hogy mondjuk bejelentkezve marad a felhasználó, és nem csak addig, amíg a böngésző nyitva van (cookie), attól még szerveroldalon kell ellenőrizni azt, hogy a felhasználó be van-e jelentkezve, vagy sem, és attól függően megjeleníteni a bejelentkező felületet, vagy a bejelentkezés után látható tartalmat. Persze lehet ezt komplikálni úgy, hogy van egy "kerete" az oldalnak, ami mindig megjelenik, aztán AJAX-szal indítasz egy kérést a szerver felé, ami az érdemi tartalmat megjeleníti, és akkor így is-úgy is elmegy a szerver felé a kérés, és a szerver felől pedig aszerint dobod vissza a tartalmat (a bejelentkező ablakot vagy épp az "irányítópultot") - de ez a lényegen akkor sem változtat, hogy a szerveroldalon kell elvégezned annak az ellenőrzését, hogy be van-e jelentkezve.
Szerk.:
de hogy az eredeti kérdésre is válaszoljak, a betöltődés utánra simán betehetsz függvényt, ami csekkol egy állapotot, aztán küld egy AJAX-kérést.
jQuery-vel írom, ha már úgyis épp azt tanulgatod:$(document).ready(function(){
var idOfPageToLoad;
if(isLoggedIn()){
idOfPageToLoad = 1;
}
else{
idOfPageToLoad = 2;
}
loadPage(idOfPageToLoad);
});Ez a kliensoldali ellenőrzés a bejelentkezett állapotra totálisan megbízhatatlan, a felhasználó akkor módosítja itt az adatokat, amikor csak akarja.
Ha a felhasználó nincs bejelentkezve, de módosítja a lekért kódot kliensoldalon, és átírja a page id-t, akkor majd jól megmutatod neki azt az admin-felületet, amit elvileg csak a bejelentkezett felhasználóknak szabadna látni?==========
(#2809) Muton : látom az önbizalomban nincs hiány...
-
Sk8erPeter
nagyúr
Ezt a feladatot szerveroldalon kell elvégezni. Remélem nem kliensoldalon akarod leellenőrizni, az adott felhasználó be van-e jelentkezve...
(#2801) Muton : fogalmam sincs, soha nem használtam a jQM SimpleDialogot, az előbbit is csak a hivatalos doksi alapján mutattam. Mondjuk szerintem gáz a dokumentációja, mert elég gyér a demólapja. Összesen 3-féle demó? Az mi...
Nem igazán fejlesztettem még mobilra, de a jQuery UI Dialogja nem jó erre a platformra? Az sokkal jobban dokumentált, és egyszerű a használata.
De ha a SimpleDialoggal kell, én a helyedben rákeresnék, hátha vannak jóféle jsFiddle-demók róla, ami egyből elédtárja a megoldást. -
Sk8erPeter
nagyúr
http://dev.jtsage.com/jQM-SimpleDialog/demos/string.html
Ez alapján:
userid = $('#simplestring').attr('data-string');továbbírva a kódodat:
'OK': {
click: function () {
$('#simplestringout').text($('#simplestring').attr('data-string'));
// itt szeretnék értéket adni a userid-nek a textbox szövegével és meghívni a login(userid)
userid = $('#simplestring').attr('data-string');
login(userid);
}
},Szemléltetés kedvéért rákerestem, van már a témában jsfiddle-demó, ezt továbbírtam egy kicsit, és itt a végeredmény:
-
Sk8erPeter
nagyúr
jQuery-vel halál egyszerű:
var list1 = {
a: 'asd',
b: 'bla',
c: {
id: 2,
date: '2012-07-26 15:05'
},
d: 'qweqweqw'
}, list2 = {
c: {
id: 666,
date: '1990-01-01 03:05'
},
d: 'újabb',
e: 'iwoeru',
f: 'lékdfgklj'
},
list3 = jQuery.extend(list1, list2);Chrome Developer Tools konzolon az eredmény:
-
Sk8erPeter
nagyúr
Szívesen!
Innen érthető meg elég jól, mit is csinál a JSON.parse(), lényegében hasonló az eval()-hoz, csak az a nagy különbség, hogy a JSON.parse() nem engedi lefutni pl. az esetlegesen kártékony JavaScript-kódot. Az eval()-nak pedig épp ez a nagy veszélye, hogy rajta keresztül lefuthatnak a rosszindulatú kódok.
Idézet:
"To convert a JSON text into an object, you can use the eval() function. eval() invokes the JavaScript compiler. Since JSON is a proper subset of JavaScript, the compiler will correctly parse the text and produce an object structure. The text must be wrapped in parens to avoid tripping on an ambiguity in JavaScript's syntax.
var myObject = eval('(' + myJSONtext + ')');The eval function is very fast. However, it can compile and execute any JavaScript program, so there can be security issues. The use of eval is indicated when the source is trusted and competent. It is much safer to use a JSON parser. In web applications over XMLHttpRequest, communication is permitted only to the same origin that provide that page, so it is trusted. But it might not be competent. If the server is not rigorous in its JSON encoding, or if it does not scrupulously validate all of its inputs, then it could deliver invalid JSON text that could be carrying dangerous script. The eval function would execute the script, unleashing its malice.
To defend against this, a JSON parser should be used. A JSON parser will recognize only JSON text, rejecting all scripts. In browsers that provide native JSON support, JSON parsers are also much faster than eval. It is expected that native JSON support will be included in the next ECMAScript standard.
var myObject = JSON.parse(myJSONtext, reviver);" -
Sk8erPeter
nagyúr
"else ágon nem kell a new Array valahogy?"
Nem, mé' kéne?
Itt láthatsz példát a JSON.parse-ra:
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);Jelen esetben objektum lett belőle, de lehet akár tömb is (Return Value: An object or array.), ha olyan a JSON string (és valid).
Működőképes ez így, ahogy írtad.
Bár szerintem felesleges a new Array() az if ágnál is, nyugodtan maradhatna az eredeti undefined érték is a változóban, az úgy még egyértelműbbé teszi a dolgot, hogy nincs beállítva.
Persze megközelítés kérdése.De ha szabad, azt javaslom, kerüld az ilyen változóneveket, mint az str, array és hasonlók, mert igaz, hogy a típus a névből kikövetkeztethető, de az nem, hogy konkrétan milyen adat lesz ott majd. Persze ha ezt csak példaként írtad, és a kódjaidban beszédesebb neveket használsz, akkor nem szóltam.
-
Sk8erPeter
nagyúr
Nem kell felfedezni a spanyolviaszt.
concat() methodTehát
a.concat(str);
VAGY
str.concat(a);Ez visszatér az összefűzött stringgel.
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
jQuery-vel pl. így:
http://jsfiddle.net/Sk8erPeter/JVpGv/
$(document).ready(function() {
var soapResponse =
'<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">'+
' <S:Body>'+
' <ns2:loginResponse xmlns:ns2="http://webservice...">'+
' <return>'+
' <sessionid>40e5bcfc</sessionid>'+
' <userid>0bc01f9a</userid>'+
' <versioning>'+
' <modulrev>1a</modulrev>'+
' </versioning>'+
' </return>'+
' </ns2:loginResponse>'+
' </S:Body>'+
'</S:Envelope>'+
'';
var $loginResponseData =
$(soapResponse)
.find("S\\:Body")
.find("ns2\\:loginResponse");
var sessionid =
$loginResponseData
.find("sessionid")
.text();
var userid =
$loginResponseData
.find("userid")
.text();
$('#userid').text(userid);
$('#sessionid').text(sessionid);
alert('User id: "'+userid+'"\n'+'Session id: "'+sessionid+'"\n');
});Persze ez csak egy példa, lehet, hogy szebben is megkapható azzal, amit használsz.
Szerk.: itt átírtam soapResponse-ra az xml változónevet, hogy egyértelműbb legyen.
Új hozzászólás Aktív témák
Hirdetés
- Beszámítás! Apple Mac mini 2023 M2 Pro 16GB 512GB SSD számítógép garanciával, hibátlan működéssel
- MSI CYBORG 15 A13V
- Xbox Game Pass Ultimate kedvező áron, egyenesen a Microsoft-tól! - AUTOMATA BOLT
- PS3 Játékok 1500Ft/db - RÉSZLETEK A LEÍRÁSBAN
- LG 40WP95XP-W - 40" NANO IPS - 5120x2160 5K - 72Hz 5ms - TB 4.0 - HDR - AMD FreeSync
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest