App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Javascript replace.
- Ersteller Antarctica
- Erstellt am
Antarctica
Grand Admiral Special
- Mitglied seit
- 11.09.2004
- Beiträge
- 2.444
- Renomée
- 34
- Standort
- Kupferstadt Stolberg
- Mein Laptop
- HP 625, V140, 4GB RAM, 32GB SSD, Ubuntu 15.04 (WT279EA)
- Prozessor
- Intel Core i5-4690, 4x 3.50GHz, boxed (BX80646I54690)
- Mainboard
- ASRock H97M Pro4 (90-MXGTA0-A0UAYZ)
- Kühlung
- Scythe Big Shuriken 2 Rev. B (SCBSK-2100)
- Speicher
- 2x Exceleram Black and White 8GB PC3-12800 DDR3-1600 Kit (EBW301A)
- Grafikprozessor
- Gigabyte GeForce GTX 750 Ti OC low profile, 2GB GDDR5, DVI, 2x HDMI, DisplayPort (GV-N75TOC-2GL)
- Display
- Samsung SyncMaster T24A350, 24" (LT24A350EW)
- SSD
- Samsung SSD 960 EVO 500GB, PCIe (MZ-V6E500BW)
- HDD
- 2x Seagate GoFlex Desk 3TB, USB 3.0 (STAC3000201/STAC3000202)
- Optisches Laufwerk
- Samsung SH-224BB schwarz, SATA, retail (SH-224BB/RSMS)
- Soundkarte
- on-board
- Gehäuse
- Inter-Tech IT-5908
- Netzteil
- be quiet! System Power S6 80Plus 300W ATX 2.2 (S6-SYS-UA-300W/BN080)
- Betriebssystem
- Microsoft: Windows 10 Pro 64Bit, DSP/SB (deutsch) (PC) (FQC-08922)
- Webbrowser
- Mozilla Firefox
Hallo,
ich versuche gerade String-Ersetzen in javascript.
Ich sende eine Kommaseparierte Liste von Tags vom Server zum Client. Tags können jedoch Kommata enthalten. Daher werden sie quasi escaped.
Der PHP-Teil zum Escapen ist
if(isset($_GET['tag'])) $_GET['tag']=str_replace(array(";",","),array(";1",";2"),mysql_real_escape_string($_GET['tag']));
Der Tag wird dann codiert in der Datenbank abgelegt, wann anders dann abgerufen und an die Seite gesendet. Dort soll Javascript dann mittels
Text = Text.replace(/;1/g, ",").replace(/;2/g, ";");
den Tag decodieren. Leider funktioniert letzteres nicht so wie es soll. Ich hab auch keine Ahnung wie es richtig geht...
ich versuche gerade String-Ersetzen in javascript.
Ich sende eine Kommaseparierte Liste von Tags vom Server zum Client. Tags können jedoch Kommata enthalten. Daher werden sie quasi escaped.
Der PHP-Teil zum Escapen ist
if(isset($_GET['tag'])) $_GET['tag']=str_replace(array(";",","),array(";1",";2"),mysql_real_escape_string($_GET['tag']));
Der Tag wird dann codiert in der Datenbank abgelegt, wann anders dann abgerufen und an die Seite gesendet. Dort soll Javascript dann mittels
Text = Text.replace(/;1/g, ",").replace(/;2/g, ";");
den Tag decodieren. Leider funktioniert letzteres nicht so wie es soll. Ich hab auch keine Ahnung wie es richtig geht...
Also am JavaScript kann es schonmal nicht liegen, die Ersetzungen funktionieren. Beispiel:
Ergebnis:
Was genau steht denn in deiner Variable "Text"? Und warum machst du die Ersetzungen nicht schon auf PHP-Seite, wenn du die Tags aus der Datenbank holst?
Warum speicherst du die Tags eigentlich nicht normalisiert in einer eigenen Tabelle?
Gruß,
Max
Code:
'Tag 1;1Tag 2;2Tag 3;1Tag 4;2Tag 5'.replace(/;1/g, ",").replace(/;2/g, ";");
Code:
Tag 1,Tag 2;Tag 3,Tag 4;Tag 5
Warum speicherst du die Tags eigentlich nicht normalisiert in einer eigenen Tabelle?
Gruß,
Max
Antarctica
Grand Admiral Special
- Mitglied seit
- 11.09.2004
- Beiträge
- 2.444
- Renomée
- 34
- Standort
- Kupferstadt Stolberg
- Mein Laptop
- HP 625, V140, 4GB RAM, 32GB SSD, Ubuntu 15.04 (WT279EA)
- Prozessor
- Intel Core i5-4690, 4x 3.50GHz, boxed (BX80646I54690)
- Mainboard
- ASRock H97M Pro4 (90-MXGTA0-A0UAYZ)
- Kühlung
- Scythe Big Shuriken 2 Rev. B (SCBSK-2100)
- Speicher
- 2x Exceleram Black and White 8GB PC3-12800 DDR3-1600 Kit (EBW301A)
- Grafikprozessor
- Gigabyte GeForce GTX 750 Ti OC low profile, 2GB GDDR5, DVI, 2x HDMI, DisplayPort (GV-N75TOC-2GL)
- Display
- Samsung SyncMaster T24A350, 24" (LT24A350EW)
- SSD
- Samsung SSD 960 EVO 500GB, PCIe (MZ-V6E500BW)
- HDD
- 2x Seagate GoFlex Desk 3TB, USB 3.0 (STAC3000201/STAC3000202)
- Optisches Laufwerk
- Samsung SH-224BB schwarz, SATA, retail (SH-224BB/RSMS)
- Soundkarte
- on-board
- Gehäuse
- Inter-Tech IT-5908
- Netzteil
- be quiet! System Power S6 80Plus 300W ATX 2.2 (S6-SYS-UA-300W/BN080)
- Betriebssystem
- Microsoft: Windows 10 Pro 64Bit, DSP/SB (deutsch) (PC) (FQC-08922)
- Webbrowser
- Mozilla Firefox
Das PHP-Script gibt meinetwegenWas genau steht denn in deiner Variable "Text"?
"Alexander,Test2,Neuer Tag"
aus. Das steht dann in request.responseText. Dann kommt
Code:
var TextList = request.responseText.split(",");
for(var i=0;i<TextList.length;i++) {
addRow(id,TextList[i]);
}
Code:
function addRow(id,Text) {
Text = Text.replace(/;1/g, ",").replace(/;2/g, ";");
[...] // HTML-Elemente erzeugen
var text = document.createTextNode(Text);
[...] // HTML-Elemente konkatenieren etc.
tbody[id].appendChild(tr);
}
Was in "Text" semantisch drin steht, hängt davon ab, was der Nutzer tut. Beim ersten Aufruf jeder Seite werden die Tags der Seite als kommaseparierte Liste geschickt, beim Anklicken eines Tags die Seiten zu dem Tag.
Weil die Übertragung zwischen Server und Client als kommaseparierte Liste erfolgt. Daher dürfen die einzelnen Werte beim Übertragen keine Kommata enthalten - in der Datenbank wär's eigentlich egal .Und warum machst du die Ersetzungen nicht schon auf PHP-Seite, wenn du die Tags aus der Datenbank holst?
Falls du damit meinst, warum ich nicht drei Tabellen statt einer verwende: KISS (Keep it small and simple).Warum speicherst du die Tags eigentlich nicht normalisiert in einer eigenen Tabelle?
Ich würde mit meiner bescheidenen Meinung behaupten, dass das Ding rein nach der Theorie sogar in 3-Normalform ist, da ich genau folgendes in der Datenbank ablege:
TABLE Socialtags (Tag VARCHAR 128, Page VARCHAR 128, added DATE)
Da gibt es keine Redundanz; die Tabelle hat schließlich nur einen einzigen möglichen Schlüssel: (Tag, Page), und das Datum hängt vom ganzen Schlüssel ab (wann wurde der Tag auf der Seite hinzugefügt).
.
EDIT :
.
HAHA, Fehler gefunden. LOL Über so viel Dämlichkeit meinerseits kann ich echt nur lachen.
Der "Fehler" heißt Browsercache...
Kenn ich woherHAHA, Fehler gefunden. LOL Über so viel Dämlichkeit meinerseits kann ich echt nur lachen.
Der "Fehler" heißt Browsercache...
Schau dir mal JSON an, damit könntest du die Tags einfach als JavaScript-Array übertragen. Dann hast du das Problem erst gar nicht mehr.Weil die Übertragung zwischen Server und Client als kommaseparierte Liste erfolgt. Daher dürfen die einzelnen Werte beim Übertragen keine Kommata enthalten - in der Datenbank wär's eigentlich egal .
Gruß,
Max
Ge0rgy
Grand Admiral Special
- Mitglied seit
- 14.07.2006
- Beiträge
- 4.322
- Renomée
- 82
- Mein Laptop
- Lenovo Thinkpad X60s
- Prozessor
- Phenom II 955 BE
- Mainboard
- DFI LanParty DK 790FXB-M3H5
- Kühlung
- Noctua NH-U12P
- Speicher
- 4GB OCZ Platinum DDR1600 7-7-7 @ 1333 6-6-6
- Grafikprozessor
- Radeon 4850 1GB
- HDD
- Western Digital Caviar Black 1TB
- Netzteil
- Enermax Modu 525W
- Betriebssystem
- Linux, Vista x64
- Webbrowser
- Firefox 3.5
oder als behelf ein Trennzeichen benutzen das ur mit sehr wenig wahrscheinlichkeit in den textfeldern vorkommen wird, wie ein pipe z.B. |
JSON wäre natürlich sehr praktisch.
Übrigens kann ich als clientseitiges Helferlein jQuery empfehlen.
Manchmal ist das echt unbezahlbar.
JSON wäre natürlich sehr praktisch.
Übrigens kann ich als clientseitiges Helferlein jQuery empfehlen.
Manchmal ist das echt unbezahlbar.
Antarctica
Grand Admiral Special
- Mitglied seit
- 11.09.2004
- Beiträge
- 2.444
- Renomée
- 34
- Standort
- Kupferstadt Stolberg
- Mein Laptop
- HP 625, V140, 4GB RAM, 32GB SSD, Ubuntu 15.04 (WT279EA)
- Prozessor
- Intel Core i5-4690, 4x 3.50GHz, boxed (BX80646I54690)
- Mainboard
- ASRock H97M Pro4 (90-MXGTA0-A0UAYZ)
- Kühlung
- Scythe Big Shuriken 2 Rev. B (SCBSK-2100)
- Speicher
- 2x Exceleram Black and White 8GB PC3-12800 DDR3-1600 Kit (EBW301A)
- Grafikprozessor
- Gigabyte GeForce GTX 750 Ti OC low profile, 2GB GDDR5, DVI, 2x HDMI, DisplayPort (GV-N75TOC-2GL)
- Display
- Samsung SyncMaster T24A350, 24" (LT24A350EW)
- SSD
- Samsung SSD 960 EVO 500GB, PCIe (MZ-V6E500BW)
- HDD
- 2x Seagate GoFlex Desk 3TB, USB 3.0 (STAC3000201/STAC3000202)
- Optisches Laufwerk
- Samsung SH-224BB schwarz, SATA, retail (SH-224BB/RSMS)
- Soundkarte
- on-board
- Gehäuse
- Inter-Tech IT-5908
- Netzteil
- be quiet! System Power S6 80Plus 300W ATX 2.2 (S6-SYS-UA-300W/BN080)
- Betriebssystem
- Microsoft: Windows 10 Pro 64Bit, DSP/SB (deutsch) (PC) (FQC-08922)
- Webbrowser
- Mozilla Firefox
Ich mag solche Frameworks überhaupt nicht.Schau dir mal JSON an, damit könntest du die Tags einfach als JavaScript-Array übertragen. Dann hast du das Problem erst gar nicht mehr.
Wenn ich mit einem Gerät XML sprechen soll, konkateniere ich mir mein XML als String zusammen (ist viel einfacher als ein Objekt zu basteln) und mach ne Telnet-Verbindung auf...
N1truX
Admiral Special
- Mitglied seit
- 06.07.2007
- Beiträge
- 1.155
- Renomée
- 64
- Standort
- Berlin
- Mitglied der Planet 3DNow! Kavallerie!
- Aktuelle Projekte
- QMC
- Lieblingsprojekt
- QMC
- Meine Systeme
- Athlon II X4 620, Athlon II X2 250, Phenom II X4 940 BE
- BOINC-Statistiken
- Mein Laptop
- ASUS U38N
- Prozessor
- AMD FX-8150 @4 GHz
- Mainboard
- GIGABYTE GA-990XA-UD3
- Kühlung
- Antec H2O 920
- Speicher
- 4x4 GB DDR3-1866 CL9
- Grafikprozessor
- Sapphire Radeon HD 5770 (940/1290))
- Display
- 2x Eizo EV2333W-BK
- HDD
- SanDisk Extreme SSD 120 GB + 9 TB Storage-Server
- Optisches Laufwerk
- LiteOn iHOS104 (BluRay-ROM)
- Soundkarte
- Denon AVR-1610 :)
- Gehäuse
- Antec P183
- Netzteil
- Be Quiet! Dark Power 430W
- Betriebssystem
- Windows7 Ultimate x64
- Webbrowser
- Opera
- Schau Dir das System auf sysprofile.de an
Dafür aber wesentlich anfälliger für Code-Einschleusungen. Du kannst via JSON ja auch Funktionen übertragen. Wer es sich leicht macht und das Objekt einfach via eval einbindet hat da schnell ein großes Problem...
Ge0rgy
Grand Admiral Special
- Mitglied seit
- 14.07.2006
- Beiträge
- 4.322
- Renomée
- 82
- Mein Laptop
- Lenovo Thinkpad X60s
- Prozessor
- Phenom II 955 BE
- Mainboard
- DFI LanParty DK 790FXB-M3H5
- Kühlung
- Noctua NH-U12P
- Speicher
- 4GB OCZ Platinum DDR1600 7-7-7 @ 1333 6-6-6
- Grafikprozessor
- Radeon 4850 1GB
- HDD
- Western Digital Caviar Black 1TB
- Netzteil
- Enermax Modu 525W
- Betriebssystem
- Linux, Vista x64
- Webbrowser
- Firefox 3.5
Ebend.
Und der Jux bei solchen Frameworks ist unter anderem dass man sich nicht um 1000 Eigenheiten gewisser Browser-Versionen kümmern muss.
Man kann in einer einzigen Zeile jQuery ein objekt selektieren, jeden kindknoten irgendwie manipulieren (css-klasse o.ä.) und mal eben den ganzen block ausblenden ohne sich mit getAttribute() und nullreference herumschlagen zu müssen, Inkonsistenzen im Event-Objekt sind kein Thema mehr und automatisches Binden von Event-handlern an per ajax neu hinzugefügte Elemente mittels .live() oder .delegate() ist absolut trivial.
Dabei ist es völlig unerheblich ob man es mit einem IE 7, 8 oder 9, einem Safari oder einem Firefox zu tun hat. Alle haben ihre Zicken und gerade IE9 ist in eingen Belangen wesentlich strenger als seine Vorgänger und auch zickiger als FF.
Man kann sichs natürlich immer schwer machen.
Aber bevor man dann XML benutzt, würde ich vorschlagen einfach Base64-Kodierte Rohdaten zu übertragen und in JS zu parsen. XML zusammenstückeln mag bei kleinen APIs noch gehen, wenn man aber gegen Webservices eine BizTalk-Server Programmieren muss und sich mit allen möglichen XML-Namespaces, Custom Types usw. rumschlagen, dann ist jede Form von Frameworke und erleichterung ein Segen! - Schon alleine der Übersichtlichkeit wegen. Ein Komplexer XML-Typ, zusammengesetzt aus 3 anderen komplexen XML-typen, welche ihrerseits wieder aus mindestens 2 XML-Typen bestehen... viel spaß bei den Verschachtelten Schleifen und If-Anweisungen um das alles sauber aneinander zu stückeln.
Und der Jux bei solchen Frameworks ist unter anderem dass man sich nicht um 1000 Eigenheiten gewisser Browser-Versionen kümmern muss.
Man kann in einer einzigen Zeile jQuery ein objekt selektieren, jeden kindknoten irgendwie manipulieren (css-klasse o.ä.) und mal eben den ganzen block ausblenden ohne sich mit getAttribute() und nullreference herumschlagen zu müssen, Inkonsistenzen im Event-Objekt sind kein Thema mehr und automatisches Binden von Event-handlern an per ajax neu hinzugefügte Elemente mittels .live() oder .delegate() ist absolut trivial.
Dabei ist es völlig unerheblich ob man es mit einem IE 7, 8 oder 9, einem Safari oder einem Firefox zu tun hat. Alle haben ihre Zicken und gerade IE9 ist in eingen Belangen wesentlich strenger als seine Vorgänger und auch zickiger als FF.
Man kann sichs natürlich immer schwer machen.
Aber bevor man dann XML benutzt, würde ich vorschlagen einfach Base64-Kodierte Rohdaten zu übertragen und in JS zu parsen. XML zusammenstückeln mag bei kleinen APIs noch gehen, wenn man aber gegen Webservices eine BizTalk-Server Programmieren muss und sich mit allen möglichen XML-Namespaces, Custom Types usw. rumschlagen, dann ist jede Form von Frameworke und erleichterung ein Segen! - Schon alleine der Übersichtlichkeit wegen. Ein Komplexer XML-Typ, zusammengesetzt aus 3 anderen komplexen XML-typen, welche ihrerseits wieder aus mindestens 2 XML-Typen bestehen... viel spaß bei den Verschachtelten Schleifen und If-Anweisungen um das alles sauber aneinander zu stückeln.
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 8K
- Antworten
- 0
- Aufrufe
- 52K
- Antworten
- 2
- Aufrufe
- 714
- Antworten
- 7
- Aufrufe
- 976
- Antworten
- 0
- Aufrufe
- 377K