Michael: prototype toJSON überschreiben?

Hallo,

ich benutze die prototype.js für AJAX und JSON. Das Problem ist, das ich alle Useringaben bevor sie geajaxt werden mittels escape() URL-tauglich machen will. Vor dem AJAX-Transfer benutze ich die Funktion toJSON() um die Daten zu verpacken also z.B.:

$("meinInput").getValue().toJSON()

Damit ich mir viel Arbeit erspare, wollte ich nun die toJSON Funktion überschreiben, weiss aber nicht wie ich das genau machen soll. Zum einen kenne ich mich mit der Syntax nicht aus, zum anderen scheint prototype.js pro Datentyp eine toJSON Funktion zu haben. Wie kann ich das am elegantesten lösen?

Also in etwa:

meineToJSON = function(wert) {
 return wert.toJSON();
}

Vielen Dank
Michael

  1. ich benutze die prototype.js für AJAX und JSON. Das Problem ist, das ich alle Useringaben bevor sie geajaxt werden mittels escape() URL-tauglich machen will.

    Ich glaube kaum, dass das prototype nicht macht.

    Struppi.

    1. Ich glaube kaum, dass das prototype nicht macht.

      Naja, ich habe auf jeden Fall das Problem das Sonderzeichen bei der Usereingabe die Sache zerschießen. Wenn der User also z.B.

      "test&test"

      eingibt bekomme ich serverseitig nur noch

      "test

      also alles ab & ist futsch.

      1. Naja, ich habe auf jeden Fall das Problem das Sonderzeichen bei der Usereingabe die Sache zerschießen. Wenn der User also z.B.

        "test&test"

        eingibt bekomme ich serverseitig nur noch

        "test

        also alles ab & ist futsch.

        Es gibt ja auch keine HTML Entity &test. Aber warum an prototype rumpfuschen, das Ergebnis von $("meinInput").getValue() sollte ein String sein, sodass sowas funzen müßte:
        escape($("meinInput").getValue()).toJSON()
        Ansonsten halt erstmal zwischenspeichern.

        JJ

        1. Es gibt ja auch keine HTML Entity &test.

          Schon klar, war ja nur eine Beispieleingabe! Ein HTML-Entity endet im allgemeinen auch mit einem ;

          Aber warum an prototype rumpfuschen

          Will ich ja nicht, ich will die Methode lediglich in und für meinen Code überschreiben. prototype bleibt unverändert.

          escape($("meinInput").getValue()).toJSON()

          Wie gesagt will ich mir diese Arbeit sparen, da ich diese Änderung an 100ten Stellen durchführen müsste.

          Hat jemand eine Antwort auf meine Frage?

          1. Hat jemand eine Antwort auf meine Frage?

            Ja, es geht nicht, da dies private Funktionen sind, die prototype da ausführt, die kannst du nicht überschreiben.

            Struppi.

          2. Hallo,

            Hat jemand eine Antwort auf meine Frage?

            Nicht, wenn du keine Antworten auf meine Fragen hast. ;)

            Mathias

      2. Ich glaube kaum, dass das prototype nicht macht.

        Naja, ich habe auf jeden Fall das Problem das Sonderzeichen bei der Usereingabe die Sache zerschießen. Wenn der User also z.B.

        "test&test"

        eingibt bekomme ich serverseitig nur noch

        "test

        also alles ab & ist futsch.

        Dann verwendest du die Funktionen von prototype eventuell falsch, ich habe eben beim durchsuchen des Quelltextes mehrfach die entsprechenden Funktionen gefunden. Eventuell übergibst du einen String und prototype splittet an den '&' Zeichen, ich vermute du musst der entsprechenden Funktion ein Objekt übergeben, ich kenn mich aber mit prototype nicht aus.

        Struppi.

  2. Hallo,

    ich benutze die prototype.js für AJAX und JSON. Das Problem ist, das ich alle Useringaben bevor sie geajaxt werden mittels escape() URL-tauglich machen will.

    Du sendest Daten als JSON zum Server?
    Wieso nimmst du nicht einfach application/x-form-urlencoded (= Verschicken als Formulardaten)?

    Prototype führt dann automatisch die Kodierung durch:

    new Ajax.Request("/URI", {
      method: "post",
      parameters: {
        formularfeld : $F("meinInput")
      }
    });

    Wo brauchst du escape und JSON wenn du nur Formulardaten übertragen willst? (Willst du?)

    Mathias