2010-02-08 14 views
10

Estoy tratando de pasar una cadena a través de una solicitud HTTP que tiene uno de los caracteres como % en la cadena de consulta URL.Cómo pasar% en una cadena de consulta URL?

url = url + "?q=" + str + "&block=" + block; // str contains the '%' character 

Pero en la página de ColdFusion donde estoy enviando esta información está volviendo siguiente error:

Element Q is undefined in URL.

Cómo puedo codificar la señal % en una dirección URL?

Respuesta

12

Usted debe cifrar la URL de todos los valores que están pasando como parámetros de consulta, pero la codificación URL para% es %25

actualización: si usted está construyendo los parámetros de consulta en javascript, es probable que quieren hacer:

url=url+"?q="+encodeURIComponent(str)+"&block="+encodeURIComponent(block) 

(. Actualización de nuevo con la sugerencia muy útil ZeissS' para utilizar en lugar de encodeURIComponentescape Ver también http://xkr.us/articles/javascript/encode-compare/)

+1

Debe usar 'encodeURIComponent()', ya que está escapando de un único componente de la URL. – ZeissS

+0

muchas gracias está funcionando ahora :) –

9

Pase su cadena de artesa la función encodeURI(...) se escapará todos los caracteres especiales no sólo el%

+0

Muchas gracias! encodeURI() fue de gran ayuda. –

+0

Considere también 'encodeURIComponent', como se señala en la respuesta de Brad G. a continuación. 'encodeURI' no codifica algunos caracteres que * deberían * estar codificados en un caso como este. Un carácter que no codifica, como un ejemplo trivial de por qué es potencialmente malo aquí, es '&'. –

+0

@pst Pero si quiere pasar parámetros en la cadena de consulta, ¿por qué quiere escapar de & que separa los parámetros? – Mic

3

URLEncodedFormat() en ColdFusion

+0

Gracias por su tiempo. ¿Puedo usar URLEncodedFormat() mientras estoy insertando los datos en la base de datos Oracle? –

+0

seguro, pero debes preguntarte si eso es realmente lo que quieres hacer. – Henry

-2

Podemos utilizar URLEncodedFormat() en ColdFusion así como también podemos usar el que se menciona a continuación.

  • encodeURI (...)
  • encodeURIComponent

Estos dos también nos ayudará a resolver nuestro problema.

Cuestiones relacionadas