He buscado todas las otras preguntas relacionadas pero ninguna más sabia.

Estoy usando javascript para capturar datos del formulario al volver a cargar el formulario para poder leer los datos en $ _GET en php.

Funciona bien a menos que haya un '&' en una cadena. El código con mis comentarios:

oSupps = form.elements["supps[]"]; 
//a multi-choice select element
var supps = getSelectedOptions(oSupps);
//returns a comma-separated list of selected items; this includes the correct string with
the ampersand
var params='supps='+supps;
//sets up the string to be returned to the page in the next line of code
self.location='instructor_register_2.inc?' + params;

La url muestra la cadena correcta con ampersand pero $ _GET divide la cadena en 2 filas y pierde el ampersand.

Un ejemplo:

string is "Abercrombie & Fitch"
$_GET is:
supps   "Abercrombie"
Fitch   ""

Traté de verificar el ampersand en la cadena y escapar en el javascript con:

needle=/&/
pos=supps.search(needle)
if(pos!=-1)
{
    newsupps=supps.replace(" & "," /& ");
    supps=newsupps;
}

Pero no pasará el supps.search diciendo que "el objeto no admite la búsqueda de propiedades o métodos".

Estoy usando el navegador incorporado en PhpED versión 8.1.

No puedo encontrar ninguna referencia a la búsqueda (y probablemente reemplazar) que no sea compatible con ningún navegador específico y se incluyen en todos los tutoriales básicos de JavaScript que puedo encontrar.

Cualquier idea por favor

-1
steveatootac 1 sep. 2014 a las 05:04

2 respuestas

La mejor respuesta

Debe escapar del componente url llamando a {{X0} }:

var params = 'supps=' + encodeURIComponent(supps);
3
Marc J. Schmidt 1 sep. 2014 a las 01:11

Está utilizando GET, por lo que el signo & indica el final de un atributo. Entonces "Fitch" se interpreta como el nombre de un nuevo atributo, que no tiene valor. Ejecute params = encodeURIComponent(params) para escapar de todos los caracteres específicos de URI.

1
red_trumpet 1 sep. 2014 a las 01:11