-
Fototrend
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
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.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
sztanozs
veterán
Nem ártana, ha függvényed visszatérne a módosított értékkel.
A string változó érték nem referencia típusú (ellentétben az osztályokkal).JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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
-
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.
[ Szerkesztve ]
Sk8erPeter
-
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);"[ Szerkesztve ]
Sk8erPeter
-
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:
[ Szerkesztve ]
Sk8erPeter
-
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:
[ Szerkesztve ]
Sk8erPeter
-
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.[ Szerkesztve ]
Sk8erPeter
-
sztanozs
veterán
-
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...
[ Szerkesztve ]
Sk8erPeter
-
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?
[ Szerkesztve ]
Sk8erPeter
-
sztanozs
veterán
Ja, csak ha valaki megszerzi a storage-ot (vagy lesniffeli a lekérést), akkor már meg is van valid session id... Ráadásul minek kliens oldalon ellenőrizni, ha szerver oldalon úgyis megteszed?
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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.[ Szerkesztve ]
Sk8erPeter
-
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.
[ Szerkesztve ]
Sk8erPeter
-
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.
[ Szerkesztve ]
http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger
-
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.
[ Szerkesztve ]
Sk8erPeter
-
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
-
Karma
félisten
-
Speeedfire
nagyúr
Nem kell mást csinálni, mert a hover az a bind-nek egy "rövidebb verziója".
Sk8erPeter: Miért? A hover az egy "bind funkció".
Igen, arra gondoltam.bind('mouseenter', handler)
bind('mouseleave', handler)[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
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)
[ Szerkesztve ]
Sk8erPeter
-
-
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ő.[ Szerkesztve ]
Sk8erPeter
-
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.[ Szerkesztve ]
Sk8erPeter
-
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.
[ Szerkesztve ]
“All nothings are not equal.”
-
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.Sk8erPeter
Új hozzászólás Aktív témák
- Formula-1
- Samsung Galaxy A52s 5G - jó S-tehetség
- Hivatalosan is bemutatta a Google a Pixel 6a-t
- sziku69: Szólánc.
- Alapértelmezett konfiguráción sok Core CPU-nak lehet stabilitási gondja
- Mobil flották
- Motoros topic
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- SSD kibeszélő
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest