Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
Azért nem ártott volna, ha valami konkrét kódot is mellékelsz, hogy lássuk, mivel próbálkoztál...
A problémádat meg azért nem értem, mert egyrészt lehet a .ckeditor()-nak callback-et is átadni, vagyis akár egy "globális" változót is be lehet állítani a callback-ben, hogy OK, inicializálva (igaz, nem szép), plusz van az a megoldás, amit martonx javasolt, ezenkívül én akárhányszor inicializálom itt a CKEditort, nem kapok rá hibát (csak gyorsan összetákolt kód, úgy nézni):
http://jsbin.com/uyizov(katt a kódhoz a jobb felső sarokban lévő "Edit in jsbin.com"-ra!)
Itt kéne lennie annak a hibának, amit írtál?
Amúgy melyik verziót használod, nem lehet, hogy valami régebbit?Szerk.: a CKEditor oldaláról közvetlenül belinkelt kódok néha Forbiddent kapnak, gondolom pár betöltés után (nem következetesen!) tiltják a direkt linkelést, szóval ne várjátok, hogy mindig működik ez a kód... nincs semmi CDN-je vagy github-oldala vagy hasonlója sem a CKEditornak, így kénytelen voltam így linkelni...
[ Szerkesztve ]
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1051 üzenetére
martonx: Sajnos ez kevés... ami előtt a hiba jelentkezik, nem jön létre semmi, legalábbis én nem látom.
Amit linkelsz, az persze, hogy megy, mert újra tölti az oldalt mindig....
Új CKEditort használok, pár napos csak.
Nm akartam bedobni az egészet, mert hosszú, és sok "felesleges" van benne (külső forrásból tölt a formhoz, stb.). Csináltam egy minta oldalt, amin előjön ez a hiba:
"Form kirakasa" gomb, ekkor szépen kiteszi a CKEditort... aztán katt a "Mas a form helyere", végül újra a "Form kirakasa" ...és már le is hal azzal a hibával, amit írtam. Egyszerűen arra lenne szükkség, hogyha másodszor teszi ki a formot, akkor előbb legyilkolja a CKEditort, és csak utána rendelje hozzá...
-
Sk8erPeter
nagyúr
Ezek szerint nem olvastad el/értelmezted, amit a "Szerk." után írtam...
Előbb gondold végig, és utána mondd, hogy "de a tiéd nem működik". De, működik.Ha Chrome-ban megnézed, a scriptek kapnak egy-egy forbiddent:
GET http://nightly.ckeditor.com/7582/ckeditor.js 403 (Forbidden)
GET http://nightly.ckeditor.com/7582/adapters/jquery.js 403 (Forbidden)Így nyilván nem is az elvártak szerint fog működni, erre írtam, hogy nincs CDN vagy hasonló hely, ahonnan közvetlenül linkelhetném, mert a hivatalos honlapról tiltják a direkt linkelést...
Próbáld ki saját gépen, ott nem fogja "újratölteni" az oldalt. Bár újratöltést nem is látok, legfeljebb azt, hogy a formot elküldi szerveroldalra.Na, de most találtam egy ILYEN kerülő megoldást, a cím mögé írtam, hogy .nyud.net, és úgy linkeltem direktben, így működni látszik (persze lehet, hogy ez is csak egy ideig, nem vágom):
http://jsbin.com/uyizov/2Nem "tölt újra" semmit...
Szerk.:
De vazze, most nézem a kódodat, amit belinkeltél:function formotide(){
var szerkesztofelulet = '<form id="admin_konyv_szerkeszt"><h2>A ... szerkesztese</h2><textarea id="ckeditor" name="konyv_leiras" rows="30" cols="80">Bla bla</textarea><br /></form>';
$('#tartalom').html(szerkesztofelulet);
$('#ckeditor').ckeditor();
}
function maside(){
$('#tartalom').html('szerkesztofelulethelyett');
}Itt minden egyes alkalommal, amikor meghívódik a formotide() függvény, létrehozod a már létező formot újra és újra... mégis mit vársz akkor, miért működne már jól?
Elég egyszerű leellenőrizni, hogy már létezik-e a form, pl. így:if($('#admin_konyv_szerkeszt').length > 0){
....
}[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #1053 üzenetére
Na, innen is tiltják úgy tűnik pár próbálkozás után a hotlinkelést, szóval kéne találni valami helyet, ahova fel lehet tölteni ezeket a JS-fájlokat, és hotlinkelni.
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1053 üzenetére
Azt mondtam, hogy működik a tiéd, nem azt, hogy nem
Már hogy ne töltené újra az oldalt? Megnyomod az Initalize gombot... utána nem tudod mégegyszer megnyomni, mert eltűnik, tehát újra kell töltenem az oldalt, hogy megint megnyomhassam. Így pedig persze hogy nincs probléma.
"Itt minden egyes alkalommal, amikor meghívódik a formotide() függvény, létrehozod a már létező formot újra és újra"
Igen, mert újra ki kell tenni.... de ettől még nem lesz ott többször, mivel a div tartalmát erre cserélem, és nem hozzáfűzöm...Szerintem félreértesz... Nem az a gond, hogy kétszer lesz kint a form, és ezt kéne ellenőrizni... hanem hogy egyszer kiteszi a gombbal, majd a másikkal eltünteti, aztán újra a formot rakatja ki, és ekkor hal le a CKEditor...
-
Sk8erPeter
nagyúr
"Már hogy ne töltené újra az oldalt? Megnyomod az Initalize gombot... utána nem tudod mégegyszer megnyomni, mert eltűnik, tehát újra kell töltenem az oldalt, hogy megint megnyomhassam. Így pedig persze hogy nincs probléma."
Még mindig nem értetted meg, amiről korábban vakerásztam... Mivel forbiddent kap a jsFiddle a scriptek include-olásakor, ezért a CKEditor rohadtul nem fog működni... Tehát érvényre sem jut, amit ott írok, dob valami exceptiont, és nem lesz return false, hanem továbbmegy az action attribútumban megadott feldolgozó fájlra.
A kódodat nem tanulmányoztam túlzottan, de akkor sem értem, mi a francnak cserélgetni a div tartalmát mindig pontosan ugyanarra, egyáltalán mit akarsz ezzel?
Ha már létezik a form meg a benne lévő div, meg a textarea, meg minden, akkor miért nem csekkolod, hogy megvan-e már?
Csak a textarea tartalmát akarod lecserélni, vagy mi a célod?Szerk.:
most utólagos engedelmeddel viszont felhasználtam az oldaladról a scriptek elérési útját.
Itt van a működő változat, aminek NEM szabad "újratöltődnie", elküldenie a formadatokat az incializáló gomb lenyomása után:
http://jsbin.com/uyizov/3
Lényeg: első inicializálás után akárhányszor nyomogathatod az inicializáló gombot, mindig ugyanaz a függvény fut le, ahol az inicializálás megtörténik, mégsem okoz SEMMI gondot...... mivel eleve lekezelték ezt az esetet.
Így már érted?[ Szerkesztve ]
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1056 üzenetére
Ok, igaz.
Mert még millió más dolgot lehet abba a divbe betölteni az oldalon, ezért cserélgetem... a mintába csak kiraktam azt a részt, ami a gondot okozza (nem az a cél, hogy ezt a két gombot nyomogassa, de előfordulhat olyan eset, hogy másodszor is vissza akarja hozni ezt a formot a CKEditoros textareával, és akkor előjön a hiba).
"Ha már létezik a form meg a benne lévő div, meg a textarea, meg minden, akkor miért nem csekkolod, hogy megvan-e már?"
Tényleg nem érted... Nem az a gond, hogy újra betölti ugyan azt, és ezt meg akarom akadályozni... azt sima ügy megoldani. A gond az, hogy betölti, majd a helyéra valami mást, majd ismét betöltené a formot, és itt amikor a CKEditor hozzá rendelőde, akkor lehal.Szerkre: Ok, szóval egyszerűen tároljam el egy változóban hogy mostmár inicializáltam... megnézem, lehet, hogy ez végülis elég is.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Ja szóval az a gond, hogy "on-the-fly" szeretnél mondjuk generálni egy ilyen szerkesztőt, mert mondjuk valami in-place-editor-féleség lenne a szerkesztéshez: ezt pedig most úgy oldod meg, hogy mondjuk van egy gomb, hogy szerkeszt, ekkor legenerál mondjuk egy divbe egy formot, aztán mondjuk ha meggondolta magát a júzer, akkor leszedi a szerkesztést, és kicserélődik a div tartalma valami másra...aztán van, hogy mégis akarja szerkeszteni, és akkor megint visszapakolod a formot. Ugye?
Akkor tehát mégis igaz, amit javasoltam korábban, hogy csekkolhatnád azt is, hogy egyáltalán jelen van-e a szerkesztőhöz tartozó textarea (vagy a form - mutattam a length ellenőrzését, ezt minden elemre meg lehet csinálni), ha igen, akkor eltüntetéskor nem egyszerűen törlöd a div tartalmát, hanem destroy-olod a már megnyitott CKEditort, és csak utána írod felül a div tartalmát. De destroy-olni is nyilván csak akkor kell, ha már inicializálva van... ez viszont megint csak nem okoz problémát, mivel csak akkor jelenik meg a lehetőség az eltüntetésre, ha már egyszer inicializáltad is a CKEditort. Az inicializáló gomb meg mindig ugyanazt csinálja. Ezért nem értem, miért nem így közelíted meg a kérdést - már ha érthető, mire akartam kilyukadni.
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1056 üzenetére
Már nem tudom szerkeszteni: Köszi! Szóval ennyi volt, simán elrakom egy változóba ha sikeresen inicializáltam... hát ez túl egyszerű volt Valamiért mindenáron akkor akartam valahogy lekérdezni, amikor inicializálnám...
1058-ra: Igen, ilyesmi a cél. A textarea ellenőrzése elég sok felesleges művelet lenne, mert egyetlen ilyen csereberélő függvény van, és úgy 99%, hogy valami más van abban a divben. Viszont így teljesen jó, hogy ha egyszer inicializáltam, akkor elrakom egy változóba, hogy igen, aztán a csereberéló függvény ezt a változót nézi, és ha igen-en van akkor nyom egy destroy-t és visszabillenti nemre a változót.
(Az eltüntet gombra tenni a destroy-t azért nem vált be... pont ezzel jött elő a gond, mert másra kattintva is tölthet abba a divbe, ha akar... és máris nem futott le a destroy)Már csak egy gondom maradt: a destroy lefutásánál ugrik egyet az egész oldal háttérképestől, mindenestől... csak egy villanás, de elég randa.
[ Szerkesztve ]
-
Male
nagyúr
válasz Sk8erPeter #1060 üzenetére
Hibátlanul működik, ugyhogy jó
(Szebb lenne valahogy lekérdezni, de vagy nem lehet, vagy csak én nem tudom, hogyan lehet...)Köszi mégegyszer!
-
Sk8erPeter
nagyúr
Szívesen!
Amúgy most nézegettem, meglepően gyászos a CKEditor jQuery-változatának dokumentációja meg egyáltalán a lehetőségei, az az adapter lószar. Egyelőre továbbra is a plain JavaScript változatot nyomatják, amivel még nincs gond, de ettől még gondolhatnának a jQuery-t már előnyben részesítő fejlesztőkre is.
Én a CKEditort kedvelem a legjobban az ilyen jellegű szövegszerkesztők közül, de azért a TÖMÖRÍTVE (!!) 366 KB-os méret enyhén szólva is nevetségesen nagy. Ideje lenne modularizálni kicsit ezt a plugint, vagy kezdeni vele valamit (átírni jobbra, vagy nem vágom), mert ez így tényleg durva. Akkor már legalább biztosítsanak hozzá CDN-t.Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1062 üzenetére
Igen, én is azt néztem, azért nem is boldogultam... ennél még az egyetemi beadandókhoz is komolyabb dokumentáció kellett
Én is mindig ezt használtam (vagy CKFindert, ha kellett a képkezelés is), de eddig sima JS volt mindig, a jQueryt nem olyan régen kezdtem megismerni-használni, így a kettő kombinációját most használom először.
Sok lehetőség lenne benne szerintem is, szóval ráfeküdhetnének a témára.Jah, van egy mérete... közel négyszerese az egész jQuerynek
-
Sk8erPeter
nagyúr
Igen, a CKEditor mérete azért már botrány. Nem néztem át tüzetesen a kódot, mert nem volt kedvem, de feltételezem, a sok belepakolt HTML-tartalom miatt van többek közt, amik stringként vannak benne, ömlesztve... Példa a tömörített változatból, csak kiragadva egyet:
n.push(' onkeydown="return CKEDITOR.tools.callFunction(',u,', event);" onfocus="return CKEDITOR.tools.callFunction(',v,', event);" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',s,', this); return false;"><span class="cke_icon"');, ehhez hasonlókból rengeteg van.
A jQuery-s változathoz viszont szerintem nem adapter kellene, hanem egy komplett átírás, ami mondjuk nyilván nem egy kétperces meló, de a jQuery annyi mindent lekezel eleve, hogy így sok-sok szutykot ki lehetne dobálni a pluginből.Amúgy nem csak a dokumentációval van a baj, hanem a jQuery-vel elérhető metódusok, stb. mennyiségével (lószar).
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1064 üzenetére
Átírás helyett lehet ,hogy valaki beelőzi őket, és csinál egy hasonlóan jót, de kifejezetten a jQueryhez... vagy már van is
-
martonx
veterán
-
Cathfaern
nagyúr
válasz martonx #1066 üzenetére
Ez nem WYSIWYG editor, szóval egységsugarú user nem fog igazán tudni mit kezdeni vele (egész pontosan kapni fogod a visszajelzéseket, hogy az miért nem úgy van )
Én tudom ajánlani az elRTE -t (nem mondom, hogy tökéletes, de ingyenesben jobbat nem láttam. Ha fizetős is szóba jöhet, akkor meg egyértelműen redactor).
-
Male
nagyúr
válasz martonx #1066 üzenetére
Köszi! ...ahogy Cathfaern írja, ez tényleg nem olyan, amit egy hozzá nem értőnek ki lehetne rakni... viszont most lehet, hogy pont erre van szükségem, ugyhogy megnézegetem alaposabban.
Cathfaern: Neked is köszi a linket. Úgy tűnik ideje újra körülnéznem szerkesztő ügyben, és végigpróbálgatni mik vannak.
-
Sk8erPeter
nagyúr
válasz Cathfaern #1067 üzenetére
Na igen. Ezeknek a méretei már jóval elfogadhatóbbak, főleg az utóbbi, a Redactor 42 KB-ja pedig végképp meggyőző. A többi szerkesztő már nagyon elszállt méret tekintetében.
"Én tudom ajánlani az elRTE -t (nem mondom, hogy tökéletes, de ingyenesben jobbat nem láttam"
Akkor azt mondod, ez jobb is, mint pl. a CKEditor vagy a TinyMCE? Nem próbáltam, ezért érdekelne, milyen szempontok miatt jobb a méretén kívül, mert nyitott lennék alternatívákra.
A CKEditor főleg amiatt tetszik, mert nagyon jó modult írtak Drupalhoz ([link], [link]), plusz ASP.NET-es alkalmazásban is nagyon egyszerű a használata. Meg a felülete is kellemes. Ettől függetlenül a mérete, nehézkessége miatt egyre kevésbé vagyok oda érte.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Nagyon hasznos jQuery-pluginek egy helyre összegyűjtve:
http://jquer.in/(Példákért az egyes aloldalakon lásd az "Example" linket.)
Ugyanitt Grid Builder:
Megadod az oldal egyszerű, körülbelüli kinézetét (hány sor, hány oszlop), és ez legenerálja a kódot (még ha nem is tökéleteset, de lehet rajta csiszolni), így kezdőknek is elég hasznos lehet.[ Szerkesztve ]
Sk8erPeter
-
Lacces
őstag
válasz Sk8erPeter #1071 üzenetére
mentettem is az oldalt
-
trisztan94
őstag
Sziasztok!
jQueryvel szeretnék ajaxolni 4 menüpontot. itt a kódom:$('document').ready(function() {
$('#welcome, #gallery, #about, #contact').click(function() {
$('#change').load('php/gallery.php');
});
});Az a lényeg, hogy egy ilyen funcitonban legyen benne az ajax és a load után, a gallery.php-s rész az változzon aszerint, hogy melyik menüpontra kattintott.. Szal ha a welcome-ra ment, akkor welcome.php lesz ott, stbstb. Én elágazásra gondoltam, de nem tudom hogy kéne leellenőrizni, hogy melyikre kattintott.
Köszi!
Thttps://heureka-kreativ.hu
-
Lacces
őstag
Nagyúr! Baj van
Hogyan tudom "installálni" a legújabb jPlayer-t?
4 tutorial-t végeztem ki, a hivatalos oldal kódjait is beszúrta, de röhej... nálam egyáltalán nem jelenik meg a lejátszó.
Régen, 1 évvel ezelőtt még szuper volt minden, most meg... nem tudom összehozni...
Esetleg te tudsz valami jó linket adni nekem?
Vagy van valami más audio lejátszó, amivel zeneszám címét lehet megjeleníteni? -
Karma
félisten
válasz trisztan94 #1073 üzenetére
Nehogy elágazz, ha már egyszer a selectorban összevontad az ID-ket (instant spagetti)... Tördeld inkább szét több .click() hívásra, és használd ki az eventData paraméterét a clicknek: példa.
[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
Szerintem a jPlayer az egyik legjobb ebből a szempontból, mert nagyon jól dokumentált, és viszonylag könnyű testreszabni, rengeteg metódusa van, publikált eventjei, stb...
Tulajdonképpen annyi alapján, amit írtál, hogy kb. "nem működik, mit tegyek", nem sok értelmeset lehet mondani... Mivel próbálkoztál, milyen kóddal, include-oltad-e a jQuery-t, a skineket, blablabla....Korábban készítettem egy példát jsFiddle-re a jPlayerrel, most update-eltem a kör alakú lejátszóval, igazából copy-paste a hivatalos oldalról, és működött...
http://jsfiddle.net/Sk8erPeter/NhJpj/
Úgy raktam be ide a kódot, hogy mindenféle szükséges HTML-tag belekerült (<html>, <head> és <body> is benne van, pedig alapból nem kell), így elvileg egy az egyben simán copy-paste-elhető saját fájlba is.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #1077 üzenetére
a "pedig alapból nem kell" természetesen a jsFiddle oldalánál igaz csak
Sk8erPeter
-
Lacces
őstag
válasz Sk8erPeter #1077 üzenetére
Dejó hogy itt vagy mester
Azóta megoldotam. Sőt firefox, chrome alatt is megy. Úgyhogy most jó minden
Az volt a gond, hogy mp3-ról volt szó, na az meg alapból nem ment firefox alatt, hiába ahogy az oldal írta, így ki kellett ezt azt vennem és nem kérdezd, miért, de elkezdett működni.
A másik böngésző a chromium volt, azon alapból nem működött a jPlayer, de Chrome alatt viszont igen. Érdekes.Viszont lenne egy kérdésem, nem tudom, hogy most php vagy inkább jquery-s mindkettő.
Itt a jquery:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
var radioStation = "http://87.117.193.10:8000/";
....Most épp linuxon vagyok, és az lenne a kérdésem, hogyan tudnám elérni, hogy a radioStation nevű változónak php-val adjak értéket?
Egyszerűen próbáltam a <?php echo ... ?> megoldást, de az persze nem működik.
A lényeg, hogy a radioStation változó értéke mindig változik a php által.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Szerintem az swfPath lehetett nálad a problémás a jPlayer esetén.
Azt határozza meg, hogy hol van a Jplayer.swf. Nagyon fontos, hogy ez stimmeljen, mert azokban a böngészőkben, ahol valamelyik médiaformátumot nem tudja lejátszani a "nyers" HTML5-ös módszerekkel, akkor Flash-sel próbálja meg lejátszani (fallback).Másik kérdésre - PHP-vel változtatásra csak egy példa:
<?php
// ez nálad dinamikusan változik
$radioStation = 'http://87.117.193.10:8000/';
?>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
var radioStation = "<?php echo $radioStation;?>";
// .......................
</script>=====
(#1080) Lacces :
"hogyan lehetne ismételtetni egy ajax hívást?"
Konkrétabban?[ Szerkesztve ]
Sk8erPeter
-
Lacces
őstag
válasz Sk8erPeter #1081 üzenetére
Hát most döbbentem... az idézőjelek
jPlayernél jaj, ne is mond, a "/"-jeleket le kellett felejeteni és csak akkor volt jó, ha az .sw fájlnak csak a mappát adtam meg és kész. Jah és a tanácsolt wmode-ot ki kellett ütni.
+ htaccess-t beállítani és ezeken áthaladva ilyen sorrendben, a htaacces beállítása után, már babán mentAjax hívás:
Az ajax függvénynek bizonyos időközönként (20 másodperc) automatikus postolást kell végezni az egyik php fájlhoz, ahol művelet hajtódik végre, és visszaad egy tömböt.Először meghívom a függvényt, aztán setIntervallal érem el, hogy 20 másodpercenként ismét küldje le az ajax kérést.
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
...
swfPath: "js",
supplied: "mp3",
//wmode: "window"
}).jPlayer("play");
ajaxStation();
setInterval("ajaxStation()",20000);
});
function ajaxStation(){
$.ajax({
type : 'POST',
url : 'shoutcast_info.php',
cache : false,
dataType: 'json',
data: {
station: radioStation
},
timeout: 6000,
success: function(obj){
$("#track_name").html(obj.track);
$("#station_name").html(obj.station);
}
});
}Egyébként ha már itt tartunk. Mivel automatikusan postol az ajax, ezért jó hogy benne van a cache : false? Illetve, hogy tömböt kapok vissza a php fájltól, annak a lekezelése így elfogadható az obj-al?
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
"Mivel automatikusan postol az ajax, ezért jó hogy benne van a cache : false?"
Nem nagyon értem a kérdést, hogy jó-e, hát ha nem akarod, hogy cache-elve legyen a kérés eredménye, akkor jó, hogy "benne van".
Jó lesz az úgy."Illetve, hogy tömböt kapok vissza a php fájltól, annak a lekezelése így elfogadható az obj-al?"
Mutass már legalább egy példát rá, hogy milyen formátumban küldöd ki a választ PHP-oldalról!setInterval("ajaxStation()",20000);
Helyett
setInterval(ajaxStation, 20000);
Így egy függvénypointert adsz át, és az jól is van úgy.$("#track_name").html(obj.track);
$("#station_name").html(obj.station);
Gondolom azt vágod, hogy ezzel semmit nem fogsz betölteni a jPlayerbe.[ Szerkesztve ]
Sk8erPeter
-
Lacces
őstag
válasz Sk8erPeter #1083 üzenetére
Na várj, át kell akkor alakítani a fájlt, hogy megtudjak jelenítei eredményt neked:
Pölö itt van egy:
{"station":"House Station Radio ","track":"Tactics - Remedy "}
De működik, és jah, nem jPlayerben jelenítem meg, hanem egy div-en. -
TonTomika
aktív tag
Sziasztok!
No, már megint ezzel a fránya jQuery-vel sikerült összeakasztani a bajszomat.
Szeretnék csinálni egy auto suggest keresőt, Találtam is hozzá egy egész jó tutorialt, viszont a srác elrontott benne valamit és utólag már nem írta le sehová, hogy hol a megoldás, forrásfájlok pedig nincsenek. Az egyik részére sikerült már rájönnöm, kilistázza már alul a megoldásokat, viszont ha rákattintok nem írja be az inputba.
index.php:
<input type="text" name="autosuggest" id="autosuggest" onkeyup="return autoSuggest()" value="" />
<div id="autosuggest-container"></div>itt beírja a delikvens a keresőszó egy részét, majd a következőkben megkapja a js
functions.js:
function autoSuggest()
{
var autoSuggestVal = $('#autosuggest').val();
if(autoSuggestVal != '')
{
$.ajax({
url: '_php/ajax/autosuggest.php?query='+autoSuggestVal,
success: function(result)
{
$('#autosuggest-container').html(result);
}
});
}
}ezt aztán szépen feldolgozza a php amit vissza is kapok jól.
Hol és mivel kéne kiegészítenem?
Arra tippelek, hogy az input value="" attribútumába kéne valahogyan beszúrnom azt, amire az alatta div-ben lévő <li> elemre kattintok.Itt megtekinthető
(Valahol van benne egy karakter kódolás beállítási hiba is, de még nem jöttem rá, hogy hol...elméletileg mindenhol minden utf-8-ra van állítva.)Előre is köszi a segítséget!
-
Sk8erPeter
nagyúr
válasz TonTomika #1085 üzenetére
Minek szívatod magad ilyen egyedi tákolmányokkal? (ezektől a mysql_query()-s baromságoktól kiráz a hideg így 2012-ben... meg milyen fantasztikus hibakezelést mutat be ezzel az ... or die(mysql_error()); résszel... )
Itt van egy jól működő megoldás:
jQuery UI Autocomplete
+ PDO és exceptionök.[ Szerkesztve ]
Sk8erPeter
-
Lacces
őstag
válasz Sk8erPeter #1086 üzenetére
igen azt használok, de erről a fájlról van szó itt. Rátudnál már majd nézni?
Pedig az elején még elég lelkes voltam, gondolkodtam azon is, hogy megírom logout-ra egy mini kis leckeként.
Gépen babán megy, tárhelyeken már nem.TonTomika: Hallgás a mesterre! Én is próbálkoztam saját megoldással és csak félig volt jó... amit ajánlott Sk8erPeter, az nagyon jó.
[ Szerkesztve ]
-
TonTomika
aktív tag
válasz Sk8erPeter #1087 üzenetére
Nem gondoltam, hogy szívás. Kitaláltam, hogy ez egy jó cucc, kéne egy ilyet csinálnom, amit később elővehetek ha kéne valamibe. Kerestem rá egy tutorialt, ez videós volt, gondoltam tanulásnak megteszi. De nem.
Megnézem ez a cuccot amit írtál, de ezen még át kell rágnom magamat, a PDO-ról pl még életemben nem hallottam. Köszi egyébként!
Male: hmm akkor jól gondoltam, szerintem ezt is megnézem, tekintve, hogy már kb majdnem készen van.
[ Szerkesztve ]
-
Male
nagyúr
válasz TonTomika #1090 üzenetére
Macerásabb, mint egy kész, de ebből tanulsz legalább... részben én is ezért csináltam magamnak. (én abban a verzióban onclick-ekkel írtam be, hogy másolja az értéket, és zárja be a listát, nomeg ugorjon a következő mezőre.... viszont akkor még nem használtam jQuery-t, nomeg itt erre ugrani szoktak, hogy nem szép megoldás, ugyhogy ezt csak halkan írtam ide )
Kérdés mindenkinek
Ha viszont már úgyis írok ide.... Ti hogyan oldanátok meg, hogy az egyik weboldalról a másikra juttassatok át adatokat? Mindkét tárhelyhez, adatbázishoz van hozzáférésem, mindkettőre én írhatom a kódot. Azonban később is működnie kell ennek az áttöltésnek, amikor már csak az adatokat szolgáltató (A) szerverhez lesz hozzáférésem. Nyilvános adatokról van szó egyébként, tehát a küldő oldalon (A) nem kell semmi jogosultság ellenőrzés, a fogadó oldalon (B) pedig csak az admin felületről lehet lekérni-áttölteni, tehát ott meg a saját védelmük dolgozik.
Elsőre úgy oldottam meg, hogy a "B" oldalon lévő admin felületen JSONP-vel lekérem az adatokat "A"-tól, ellenőrzöm, hogy jó-e. Ha igen, akkor sima $.post-tal elküldöm ("B"-nek, tehát domainen belül)... ez így elvileg sima ügy.
A gond, hogy localon ez tökéletesen működik is, akkor is, ha az "A" oldal már a neten lévő valós... viszont ha mindkettő a valós helyén fut, akkor nem megy.Ami még fontos lehet, JSONP-vel két érték érkezik. Az egyik egy hibakód, ezzel ellenőrzöm, hogy jó-e ami megérkezett, vagy történt valami hiba. A másik pedig maga az eredmény, ami tömörítve jön (egy pár tíz KB-os tömb, jsonencode, majd sima gzcompress, majd egy utf8encode után). A $.post-nál már csak az eredményt küldöm el (és hogy mit kezdjen vele).
Tesztelgettem, próbálgattam. Ha kiíratom az eredmeny-t, miután megjött "A"-tól, de még a $.post előtt, akkor látszólag oké. Viszont a $.post ahová küldi PHP-t, ott meg mintha nem érkezne meg... isset($_POST['eredmeny'])-t nézek, és false-ot ad (a mit kezdjen vele viszont megérkezik rendben).
Ha a tömörített cucc helyett csak egy C betűt küldök vissza eredményként, az szépen végig is megy, megérkezik a végső céljához...Mi a fene lehet a gond? Egyszerűen nem értem, mert "A"-tól biztos rendben van ami érkezik, hiszen "B"-t localon futtatva, de a valós "A"-tól kérve az adatokat minden rendben működik. A JS kódot ugyan az a gép-böngésző futtatja mindkét esetben, így ezt is kizárnám... a "B" oldalon meg hát... olyan nincs, hogy egy sima isset() localon jól működik, a szerveren meg nem... mert ha kb ennyit hagyok a kódban, akkor is azt mondja, hogy nem kapta meg.
A szerveren lehet valami korlátozás arra nézve, hogy mit lehet post-olni neki, és ha ettől eltérek, akkor eldobja, vagy mi a fene?(Jah, hibaüzenet természetesen sehol sincs, szimplán nem érkezik meg a post-olt tartalom)
[ Szerkesztve ]
-
-
Male
nagyúr
válasz martonx #1092 üzenetére
A post már nem cross domain rész, ezt lehet, hogy nem írtam le pontosan. Tehát a JS kód a fogadó ("B") oldalon fut, így az adat megszerzése a cross domain, a postolás már domainen belül megy utána. Amit elpostol, annak az egyik fele rendben is van (hogy mit tegyen vele), csak pont az eredmény nem, az mintha eltűnne
-
Sk8erPeter
nagyúr
"én abban a verzióban onclick-ekkel írtam be [....] nomeg itt erre ugrani szoktak, hogy nem szép megoldás"
Nem "ugrani" szoktunk, hanem jelezni, hogy ez úgy nem könnyen karbantartható, meg szemantikai keveredés a kódban.A JSONP-s kérdésre meg igen nehéz lenne megmondani a tutit kód nélkül (ahogy általában, itt sem ártana legalább egy példakód, hogy mit használsz...).
========
(#1088) Lacces : közben PHP topicban kitárgyaltuk, hogy az allow_url_fopen valszeg false-ra van állítva a szerveren, amin próbálkozol.
[ Szerkesztve ]
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1094 üzenetére
Nyilván túloztam, részben erre is ment a smiley
Ok, lesz majd, csak ugye elég terjedelmes az eredeti, illetve ha nem azt küldöm vissza, amit a szerver dobna, hanem egy egyszerű szöveget, akkor meg működik a tárhelyen is, tehát még az adatokon is múlhat, csak nem értem miért.
A JS-ből a lényeg:
function admin_konyv_hozzaad(ajx_konyvtar_konyv_id){
$.get(
url_diriszerver,
{mi: "admin_konyvtar_konyv" , konyvtar_konyv_id: ajx_konyvtar_konyv_id},
function(valasz){
if(valasz.hiba != '0'){
switch(valasz.hiba){
/* hibakezelés */
}
}
else{
//Tehát megvan a válasz hibátlanul... küldjük el az admin_kezelonek
$.post(
"admin_kezelo.php",
{mittesz: "hozzaad" , ajx: "1", hozzaadando: valasz.egybenminden},
function(visszajelzes){
switch(visszajelzes){
/* visszajelzés kezelés */
}
}
);
}
},
"jsonp"
);
}A küldő oldalon a PHP-ból a lényeg:
$data['hiba'] = '0';
$data['egybenminden'] = utf8_encode(gzcompress(json_encode($tomb),1)); //A $tomb amit összeszed minden féle szükségest az adatbázisból
header('Content-type: application/javascript; charset=utf-8');
print sprintf('%s(%s);', $_GET['callback'], json_encode($data));A fogadó oldalon pedig ha egyszerűen a isset($_POST['hozzaadando']) false-ot ad... (az isset($_POST['ajx']) és az isset($_POST['mittesz']) az true).
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz TonTomika #1085 üzenetére
Megnéztem az oldalt, amit linkeltél, és ez egérkattintás esetén elvileg jól működik:
$(document).ready(function(){
$('#autosuggest-container').on('click', 'ul li', function(){
var suggested_text = $(this).text();
$('input#autosuggest').val(suggested_text);
});
});================================================
Egyébként az onkeyup attribútum használata helyett csinálhatnád így:
<input type="text" name="autosuggest" id="autosuggest" onkeyup="return autoSuggest()" value="" />
HELYETT
<input type="text" name="autosuggest" id="autosuggest" value="" />
JS-kód:
function autoSuggest() {
var autoSuggestVal = $('#autosuggest').val();
if (autoSuggestVal != '') {
$.ajax({
url: '_php/ajax/autosuggest.php?query=' + autoSuggestVal,
success: function (result) {
$('#autosuggest-container').html(result);
}
});
}
}
$(document).ready(function(){
$('input#autosuggest').keyup(autoSuggest);
$('#autosuggest-container').on('click', 'ul li', function(){
var suggested_text = $(this).text();
$('input#autosuggest').val(suggested_text);
});
});Sk8erPeter
-
Sk8erPeter
nagyúr
$data['hiba'] = '0';
Ennek a '0' stringnek semmi értelme. Akkor már legyen "rendes" int, vagy boolean érték (true/false).Ezenkívül szerintem a kicsit nehézkesebb hibakezeléssel bíró $.get(), $.post() függvények helyett komplexebb esetben jobban járnál a sima $.ajax() függvénnyel, megfelelően felparaméterezve. Szerintem legalábbis a kódban egyértelműbben néz ki. Sőt, ha már JSON, akkor miért nem használod a jQuery.getJSON() függvényt? (JSONP-re is használható, lásd a példát)
A PHP-s részre: szerintem az 'egybenminden'-nél nem nagyon van értelme, hogy json_encode-old is, ha a végén úgyis json_encode-olod az egészet.
Az application/javascript NEM jó MIME-type, ez a jó:
application/jsonA debuggoláshoz használd a console.log()-ot, pl.:
console.log('valasz:');
console.log(valasz);A többire: olyan hosszan írtál, hogy őszintén szólva számomra már zavaros volt, hogy A és B szervernél hova küldözgeted, de az sem világos, hogy mi értelme van annak, hogy lekérsz adatokat a másik szervertől, majd miután ez megtörtént, azonnal vissza is küldesz adatokat ugyanannak a szervernek (vagy nem ugyanannak?), csak akkor már POST-metódussal. De lehet, hogy csak számomra kavarodás, nem nagyon volt kedvem még egyszer átolvasni és végiggondolni.
[ Szerkesztve ]
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1097 üzenetére
"Akkor már legyen "rendes" int"
Igaz... viszont néhol betűt is tartalmaz a hibakód, így egységesen írtam... most, hogy az az egyetlen érték string vagy int, nagy jelentősége nincs."jobban járnál a sima $.ajax()"
Lehet, bár elvileg ekvivalens a kettő. A getJSON-nel egyszerűen nem működött, soha nem érkezett meg a válasz, pedig elvileg jól írtam meg... így hagytam a fenébe, és megírtam sima gettel. Viszont ez a rész elvileg jó."szerintem az 'egybenminden'-nél nem nagyon van értelme, hogy json_encode-old is, ha a végén úgyis json_encode-olod az egészet."
Mivel egy tömböt tömörítek, ami stringet vár bemenetnek, így muszáj előtte is egy json_encode."Az application/javascript NEM jó MIME-type, ez a jó:
application/json"JSON-nél valóban az kell, amit te írsz, de JSONP-hez úgytudom az kell, amit én írtam. katt
"A debuggoláshoz használd a console.log()-ot"
Köszi!
Alerttel oldottam meg, és az alapján a válasz rendesen megérkezik, a gond, hogy utána a postnál mintha nem menne el :S"lekérsz adatokat a másik szervertől, majd miután ez megtörtént, azonnal vissza is küldesz adatokat ugyanannak a szervernek"
Annak valóban nem lenne értelme, de én egy másik szerverről kérek le adatokat, és a sajátnak küldöm utána tovább. -
Sk8erPeter
nagyúr
Hmm, nem tom, a MIME-type témában akkor melyik az igaz, de akkor lehet, hogy úgy van, ahogy írod.
"Alerttel oldottam meg, és az alapján a válasz rendesen megérkezik, a gond, hogy utána a postnál mintha nem menne el :S"
Ezek helyett a "mintha" szavak helyett mi lenne, ha meggyőződnél róla? Pont a hibakezelés egyszerűsége miatt ajánlottam a $.ajax() függvényt. A console.log-ot pedig azért ajánlottam, mert jóval értelmesebben lehet vele kiíratni az adatokat, pl. ha objektum érkezik (és az fog), akkor elég ezzel kiíratni a kapott választ, és kibontható formában tekintheted meg a konzolon (F12, vagy Ctrl+Shift+I). Akkor láthatod, minden szükséges rész megvan-e.Itt mutat példát a $.post()-tal való válasz- és hibakezelésre:
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });Szerintem ez jóval ocsmányabb, mintha "egyben" lenne az egész az $.ajax() függvényben.
Mindenesetre használd ezeket a hibakezelő függvényeket is, hogy megtudd, hogy hol lehet potenciális hiba.
Meg ha nem mondod meg, mit kell elpostolni, akkor nem tudunk segíteni.Ezenkívül martonx már említette, hogy a POST-metódussal parák lehetnek távoli szerver felé, bár meg kéne tudnod, hogy egyáltalán a szerverhez érkezik-e bármi, pl. úgy, hogy naplózod a szerveren a bejövő kéréseket debuggolás erejéig (pl. adatbázisba vagy fájlba, most a lényeg szempontjából mindegy).
Sk8erPeter
-
Male
nagyúr
válasz Sk8erPeter #1099 üzenetére
Hogy fizikailag mi ér oda, arról nem tudok meggyőződni, ezért írtam így (lehet valami szűrő előtte a tárhelyen), de a PHP már nem kapja meg, mivel az isset szerint nincs.... szóval a mintha helyett akkor azt írom, hogy nem érkezik meg
A mit kell elpostolni... az egy kupac tömörített adat, ennél pontosabban nem tudom hogy írjam le, ottvan a PHP rész ami ezt összeállítja egy tömbből (a tömbben stringek vannak, több helyről az adatbázisból... egyébként könyvek, azok leírásai, adatai, a hozzá tartozó kiadóké, stb. Pár 10KB-ról van szó max.... a tesztben most csak ~ 300 Byte a tömörítés után).
Említette, de írtam is rá, hogy a post nem távoli szerver felé megy, ugyhogy ez nem lehet a gond.
Azt pedig megtudtam, hogy érkezik hozzá a postból. Ottvan a JS részen látod, mit postol... mittesz, ajx és hozzaadando van a postban felsorolva, az első kettő megérkezik a harmadik nem.
Új hozzászólás Aktív témák
- AKCIÓ Új Dobozos Macbook Pro dokkoló új ára 70.000 forint
- ThinkPad Hybrid USB -C USB -A Dock 40AF Új ára 80.000 Forint Ingyen szállítás
- Xiaomi Redmi Note 9s 128/6 GB 34.9E !!!
- Új Hp Pavilion 15-eh Fémházas Szuper Laptop 15,6" -30% AMD Ryzen 7 5700U 8Mag 16/1TB FHD MATT
- ATI RADEON RX 480 -8 gb DDR5 256 bit videokártya