Ich bin auf ein Problem gestoßen, bei dem der Benutzer Daten eingibt, und wenn es überhaupt einfache Anführungszeichen gibt, ist das Skript fehlerhaft.
Was ist der beste Weg, um einfache Anführungszeichen, die Benutzer eingeben, zu behandeln, so dass es das jquery / javascript nicht stört?
UPDATE:
Ich sende es durch Ajax zu einer Datenbank. Hier ist der Datenparameter für einen Json-Ajax-Aufruf.
data: "{str_" + sectionName + " :'" + UpdateText + "',EntityID: '" + EntityID + "' }",
wobei update text die Zeichenfolge ist, die die Anführungszeichen enthalten kann.
Sie können eine der vielen String.replaceAll-Implementierungen finden oder Ihre eigenen schreiben und einfach alle einfachen oder doppelten Anführungszeichen durch eine Escape-Version wie \ "oder \" ersetzen.
Sie müssen die Anführungszeichen mit einem \ oder abhängig davon, wie Sie den String verwenden möchten, umgehen. Sie können die Funktionen javascript escape und unescape verwenden.
%Vor%Sehen Sie auch nach, wie Sie Escapezeichenfolgen mit jQuery
knacken können Um Werte in der AJAX-Anfrage zu umgehen, Schreiben Sie nicht Ihre eigene Implementierung von escape oder verwenden Sie escape () -Methode. ( escape()
ist veraltet) . Erstellen Sie stattdessen ein JSON-Objekt und verwenden Sie die Methode JSON.stringify
.
Für Ihren Fall sollte es wie sein (ignorieren Sie dynamische Eigenschaft für jetzt) :
%Vor%Später in Ihrer Ajax-Anfrage können Sie tun:
%Vor%Wenn Sie dynamische Eigenschaften mit Ihrem JSON-Objekt verwenden möchten, können Sie das Objekt für Ihren speziellen Fall in zwei Schritten erstellen:
%Vor% Diese Vorgehensweise verhindert, dass Sie einzelne / doppelte Anführungszeichen und andere ungültige Zeichen manuell entfernen. JSON.stringify
wird dafür sorgen.
(Ich bin hierher gekommen, um nach einem ähnlichen Problem zu suchen, konnte aber keine passende Arbeitslösung finden, deshalb habe ich hier eine hochgeladen)
Da Sie AJAX erwähnt haben, besteht die Möglichkeit, dass die Strings, die einfache Anführungszeichen enthalten, auf der Serverseite zurückgewiesen werden.
Stellen Sie sicher, dass Sie escape string function
, beispielsweise per PHP, vor dem Einfügen von Strings in die Datenbank verwenden.
Dies hilft dabei, einzelne oder doppelte Anführungszeichen zu umgehen, die in der Zeichenfolge '$ user_name' vorkommen können. Es verhindert auch jede Art von SQL-Injektion atacks!
Javascript hat dafür eine eingebaute Methode, die mehr als nur einfache Anführungszeichen umfasst. Es heißt encodeURIComponent, von Javascript Kit :
Wird verwendet, um den Parameterbereich eines URI für Zeichen mit besonderer Bedeutung zu codieren, um sie von reservierten Zeichen wie "& amp;" Diese fungieren als Schlüssel / Wert-Trennzeichen. Umfassender als encodeURI () kodiert es alle Zeichen mit besonderer Bedeutung in einer URL-Zeichenfolge, einschließlich "=" und "& amp;". Verwenden Sie diese Methode nur für den Parameterabschnitt eines URIs. Andernfalls ist der URI möglicherweise nicht mehr gültig, wenn er eines der Zeichen enthält, die Teil eines gültigen URI sind (z. B. "+") und dennoch als Teil des URI-Parameters maskiert werden sollte.
Also sollte Ihr Code werden:
%Vor%Ich kodiere alles, was ich in einer Abfragezeichenkette sende, um sicher zu sein, aber das Kodieren der EntityID könnte wohl übersprungen werden, weil es nicht vom Benutzer kommt (ich nehme an), also wissen Sie, dass es keine Sonderzeichen hat .
Dank mbrevoort, Ich erarbeite mehr über seine Antwort
Wenn Sie in einer Abfrage ein einfaches Anführungszeichen senden: empid="T'via" empid = escape (empid)
Wenn Sie den Wert mit einem einfachen Anführungszeichen erhalten var xxx = request.QueryString ("empid") xxx = unscape (xxx)
Wenn Sie den Wert, der ein einzelnes Anführungszeichen enthält, in einer Abfrage suchen / einfügen wollen xxx = Ersetzen (empid, '' "," '' ")
Tags und Links javascript string jquery escaping