escape characters javascript ajax post encode decode

characters - url decode javascript



AJAX POST y signo Plus(+)-¿Cómo codificar? (6)

El valor hexadecimal que está buscando es %2B

Para obtenerlo automáticamente en PHP, ejecute su cadena a través de urlencode($stringVal) . Y luego ejecutarlo a través de urldecode($stringVal) para recuperarlo.

Si desea que JavaScript lo maneje, use escape( str )

Editar

Después del comentario de @ bobince, hice más lecturas y él está en lo correcto. Utilice encodeURIComponent(str) y decodeURIComponent(str) . Escape no convertirá los personajes, solo los escapará con / ''s

Estoy PUBLICANDO los contenidos de un campo de formulario a través de AJAX a un script PHP y usando JavaScript para escape(field_contents) . El problema es que los signos más se eliminan y se reemplazan por espacios. ¿Cómo puedo ''codificar'' de forma segura el signo más y luego ''decodificarlo'' adecuadamente en el lado de PHP?


En JavaScript, pruebe:

encodeURIComponent()

y en PHP:

urldecode($_POST[''field'']);


Para hacerlo más interesante y, con un poco de suerte, permitirle menos tirones de pelo a otra persona. Utilizando python, diccionario integrado para un dispositivo que podemos usar curl para configurar.

Problema: {"timezone":"+5"} //throws an error " 5"

Solución: {"timezone":"%2B"+"5"} //Works

Entonces, en pocas palabras:

var = {"timezone":"%2B"+"5"} json = JSONEncoder().encode(var) subprocess.call(["curl",ipaddress,"-XPUT","-d","data="+json])

Gracias a esta publicación!


Si tiene que hacer un curl en php, debe usar urlencode() desde PHP pero de forma individual.

strPOST = "Item1=" . $Value1 . "&Item2=" . urlencode("+")

Si urlencode(strPOST) , le traerá otro problema, tendrá un Item1 y & cambiará el valor de% xx y será un solo valor, vea aquí la devolución.

Ejemplo 1

$strPOST = "Item1=" . $Value1 . "&Item2=" . urlencode("+") will give Item1=Value1&Item2=%2B

Ejemplo 2

$strPOST = urlencode("Item1=" . $Value1 . "&Item2=+") will give Item1%3DValue1%26Item2%3D%2B

El ejemplo 1 es la buena manera de preparar una cuerda para POST en el rizo

¡El ejemplo 2 muestra que el receptor no verá el igual y el signo y para distinguir ambos valores!


Utilice encodeURIComponent () en JS y en PHP debería recibir los valores correctos.

Nota: Cuando accede a $_GET , $_POST o $_REQUEST en PHP, está recuperando valores que ya han sido descodificados.

Ejemplo:

En tu JS:

// url encode your string var string = encodeURIComponent(''+''); // "%2B" // send it to your server window.location = ''http://example.com/?string=''+string; // http://example.com/?string=%2B

En tu servidor:

echo $_GET[''string'']; // "+"

Solo la solicitud HTTP sin formato contiene los datos codificados en la url.

Para una solicitud GET puede recuperar esto desde el URI. $_SERVER[''REQUEST_URI''] URI. $_SERVER[''REQUEST_URI''] o $_SERVER[''QUERY_STRING''] . Para una POST urlencoded, file_get_contents(''php://stdin'')

NÓTESE BIEN:

decode() solo funciona para caracteres codificados de un solo byte. No funcionará para toda la gama UTF-8.

p.ej:

text = "/u0100"; // Ā // incorrect escape(text); // %u0100 // correct encodeURIComponent(text); // "%C4%80"

Nota: "%C4%80" es equivalente a: escape(''/xc4/x80'')

Cuál es la secuencia de bytes ( /xc4/x80 ) que representa Ā en UTF-8. Entonces, si usa encodeURIComponent (), su lado del servidor debe saber que está recibiendo UTF-8. De lo contrario, PHP destruirá la codificación.


mi problema fue con los acentos (á É ñ) y el signo más (+) cuando intento salvar "ejemplos de código" de JavaScript a mysql:

mi solución (no es la mejor manera, pero funciona):

javascript:

function replaceAll( text, busca, reemplaza ){ while (text.toString().indexOf(busca) != -1) text = text.toString().replace(busca,reemplaza);return text; } function cleanCode(cod){ code = replaceAll(cod , "|", "{1}" ); // error | palos de explode en java code = replaceAll(code, "+", "{0}" ); // error con los signos mas return code; }

función para guardar:

function save(pid,code){ code = cleanCode(code); // fix sign + and | code = escape(code); // fix accents var url = ''editor.php''; var variables = ''op=save''; var myData = variables +''&code=''+ code +''&pid=''+ pid +''&newdate='' +(new Date()).getTime(); var result = null; $.ajax({ datatype : "html", data: myData, url: url, success : function(result) { alert(result); // result ok }, }); } // end function

función en php:

<?php function save($pid,$code){ $code= preg_replace("[/{1/}]","|",$code); $code= preg_replace("[/{0/}]","+",$code); mysql_query("update table set code= ''" . mysql_real_escape_string($code) . "'' where pid=''$pid''"); } ?>