Toon posts:

[AJAX][POST] ampersand(&) encoding

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een script gemaakt voor ajax dat automatisch form input via ajax post naar een url. alleen heb ik het probleem dat het & simbool wanneer ingevoerd in een veld de post variabele afbreekt. Nu is het heel makkelijk om natuurlijk even het & symbool te replacen voor iets anders en aan de ontvangerskant weer naar & om te zetten, maar volgens mij moet dit makkelijker kunnen.: namelijk: Bij een normale post (geen ajax) wordt de query string uit een form automatisch gevormd en wordt de ampersand dusdanig gecodeert dat deze kan worden verzonden en voor de ontvanger weer automatisch wordt ingelezen als ampersand. Het lijkt mij dus logisch dat je een ampersand kan coderen zodat deze aan de ontvangers kant gelijk leesbaar is als ampersand zonder omvorming.

iemand die hier ervaring mee heeft, of die weet hoe dit moet?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

Je POST dus niet? Want met POST is de hele querystring niet van belang en kan dit probleem ook niet optreden. (tenzij je POST naar een bestand met querystring, maar dat is nogal onzinnig imho).

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Hij post wel, maar de gegevens van de post worden aan de Send methode van xmlHttpRequest mee gegeven als zijnde een querystring.

Dus var1=a&var2=bla. Echter nu zijn waarde bevat dus een ampersand en daardoor krijg je een incorrecte querystring als post.

De oplossing is het gebruik van de javascript functie escape. Deze verzorgt de url encoding van je waardes.

JavaScript:
1
var data = "var1=" + escape(value1) + "&var2=" + escape(value2)

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 20:36

Reinier

\o/

Volgens mij bedoelt Bosmonster: weet je zeker dat je het formulier POST en niet met GET verstuurt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Niemand_Anders schreef op woensdag 13 februari 2008 @ 10:11:
De oplossing is het gebruik van de javascript functie escape. Deze verzorgt de url encoding van je waardes.

JavaScript:
1
var data = "var1=" + escape(value1) + "&var2=" + escape(value2)
Ik ga dit meteen proberen! klinkt idd logisch

En inderdaat zoals Niemand_Anders al zegt ik post de data van het form via de send methode van het xmlHttpRequest object.

[ Voor 14% gewijzigd door Verwijderd op 13-02-2008 10:31 ]


  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Hmm ik vond een interessant stukkie online
Summary: What does this mean?
When to use which?
The escape() method does not encode the + character which is interpreted as a space on the server side as well as generated by forms with spaces in their fields. Due to this shortcoming and the fact that this function fails to handle non-ASCII characters correctly, you should avoid use of escape() whenever possible. The best alternative is usually encodeURIComponent().

escape() will not encode: @*/+

Use of the encodeURI() method is a bit more specialized than escape() in that it encodes for URIs [REF] as opposed to the querystring, which is part of a URL. Use this method when you need to encode a string to be used for any resource that uses URIs and needs certain characters to remain un-encoded. Note that this method does not encode the ' character, as it is a valid character within URIs.

encodeURI() will not encode: ~!@#$&*()=:/,;?+'

Lastly, the encodeURIComponent() method should be used in most cases when encoding a single component of a URI. This method will encode certain chars that would normally be recognized as special chars for URIs so that many components may be included. Note that this method does not encode the ' character, as it is a valid character within URIs.

encodeURIComponent() will not encode: ~!*()'
op de een of andere manier lijkt encodeURIComponent meer de oplossing dan escape toch

[ Voor 3% gewijzigd door vorlox op 14-02-2008 00:25 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zie ^^

escape() is niet RFC-compliant en is feitelijk een nutteloos relikwie, gebruik encodeURIComponent bij het samenstellen van je POST-body.

Intentionally left blank

Pagina: 1