Foros del Web » Programando para Internet » Javascript »

Envia datos con otra codificacion en ajax, problema

Estas en el tema de Envia datos con otra codificacion en ajax, problema en el foro de Javascript en Foros del Web. cuando envió la palabra @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código palabra: Ver original así por ajax me registra esto en la base de datos(solo quiten el espacio por ...
  #1 (permalink)  
Antiguo 08/05/2013, 14:44
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Envia datos con otra codificacion en ajax, problema

cuando envió la palabra

Código palabra:
Ver original
  1. así

por ajax me registra esto en la base de datos(solo quiten el espacio por que aqui no se permite eso, lo pone en asterisco por eso puse el espacio)

Código registro en mysql:
Ver original
  1. asÃ& shy;
y me da como resultado esto

Código resultado html:
Ver original
  1. asÃ*



y por submit me registra esto

Código registro en mysql:
Ver original
  1. así

y me lo muestra bien "así"

por ajax cambia la codificación o que?

uso el mismo archivo de inserción a la hora de enviar los datos
solo que lo llamo de diferentes maneras, si el usuario presiona enter se envía por ajax, y si presiona el botón se envía por submit.

mi función limpiar es la siguiente antes de insertarlo

Código PHP:
Ver original
  1. $comentariotexto=cleanString($_POST['comentariotexto']);
  2.  
  3. function cleanString($string){
  4.     $string=trim($string);    
  5.     $string=htmlspecialchars($string);
  6.     $string=htmlentities($string);
  7.     $string=nl2br($string);
  8.     return $string;
  9. }


para enviar por ajax uso esto

Código Javascript:
Ver original
  1. oAjaxE2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

creo que eso es el problema, la codificación

de antemano gracias


REEDITO

medio corregi.
solo modifique la funcion cleanString asi

Código PHP:
Ver original
  1. function cleanString($string){
  2.     $string=trim($string);    
  3.     $string=htmlspecialchars($string);
  4.     //$string=htmlentities($string);
  5.     $string=htmlentities($string, ENT_QUOTES,"UTF-8");
  6.     $string=nl2br($string);
  7.     return $string;
  8. }

con esto me funciona con ajax de maravilla,
pero el del submit ya ni siquiera guarda los datos que tienen acentos se detiene por que la base de datos no permite nullos y el EN_QUOTES deja la variable en nullo
para que el submit guarde los datos que tienen acentos debo cambiar la comentada por la otra asi

Código PHP:
Ver original
  1. function cleanString($string){
  2.     $string=trim($string);    
  3.     $string=htmlspecialchars($string);
  4.     $string=htmlentities($string);
  5.     //$string=htmlentities($string, ENT_QUOTES,"UTF-8");
  6.     $string=nl2br($string);
  7.     return $string;
  8. }

podria hacer un booleano pero no creo que sea la forma mas correcta de hacer que esto funcione.

y pues el problema es en la codificacion del ajax, lo puedo resolver comentando y descomentando pero la idea es que cualquiera de los dos funciones, ya que uno es con enviar por ajax cuando el usuario presione enter, y el otro es enviar con submit cuando el usuario presione el boton, por si tiene desactivado javascript
lo unico que se ocupa para que funcione seria saber poner
esto UTF-8 en esta sintaxys
Código Javascript:
Ver original
  1. oAjaxE2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


aqui el ajax completo

Código Javascript:
Ver original
  1. var oAjaxE2;
  2. function enviarlosDatos(method,vars)
  3. {
  4.  
  5.      
  6.  
  7.         try{
  8.             oAjaxE2=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
  9.            
  10.         }
  11.         catch (e){
  12.             try{
  13.                 oAjaxE2=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
  14.             }
  15.             catch (e){
  16.                 try{
  17.                     oAjaxE2=new ActiveXObject("Microsoft.XMLHTTP");
  18.                 }
  19.                 catch (e){
  20.                     alert("Tu explorador no soporta AJAX.");
  21.                     return false;
  22.                 }
  23.             }
  24.         }
  25.  
  26. var URL="insertarelcomentario.php"
  27.  
  28.     if (method == "GET")
  29.       {
  30.         oAjaxE2.open(method, URL+"?"+vars, true);
  31.         vars = "";
  32.         alert("get")
  33.       }
  34.       else
  35.       {
  36.    
  37.         oAjaxE2.open(method, URL, true);
  38.          
  39.  
  40.        
  41.         oAjaxE2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  42.        
  43.        
  44.  
  45.        
  46.       }
  47.    
  48.       oAjaxE2.send(vars);
  49.  
  50.      
  51. }

nose si tenga que ver eso pero lo envio del index y contiene esto
Código PHP Y HTML:
Ver original
  1. <? session_start();?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">

cabe destacar que en el index uso esto
Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

YA CORREGI poniendo utf8 a todo

entonces todo lo que meto a la base de datos ya me lo muestra bien.
ahora tengo otro problema
ahora me muestra informaci�n en el resto de la web(lo que no esta en base de datos)


tuve que acudir a lo que no queria, tengo que hacer esto en toda la web cada vez que use un acento
Código PHP:
Ver original
  1. Dise<? echo limpiar("ñ");?>o
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 08/05/2013 a las 19:01
  #2 (permalink)  
Antiguo 08/05/2013, 21:26
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Envia datos con otra codificacion en ajax, problema

si
A. Todos tus archivos guardados con el editor de texto como utf-8 (sin BOM)
B. Reciben un header utf-8
C. Tu base de datos tiene codificación utf8

No deberías hacer ninguna modificación extra, si por las dudas tu servidor está pasando algún header extraño, podés forzar todo a utf-8 con lo siguiente

tus html con un meta utf-8
tus php (aunque contengan html con un meta utf-8 declarado), al inicio:
Código:
header("Content-Type: text/html;charset=utf-8");
en tu .htaccess ( si usas Apache)
Código:
AddDefaultCharset off
AddCharset utf-8 .js .html
y en tu conexión a la BD
Código:
$sql_hostname = 'localhost';
$sql_login = xxxx;
$sql_password = 'xxxx';
$sql_base = 'xxxxx';
$conectar_BD = mysql_connect($sql_hostname,$sql_login,$sql_password);
$seleccion_BD = mysql_select_db($sql_base,$conectar_BD);
mysql_set_charset("utf8",$conectar_BD); 
No olvides el primer punto
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 08/05/2013, 21:50
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Envia datos con otra codificacion en ajax, problema

Cita:
Iniciado por emprear Ver Mensaje
si
A. Todos tus archivos guardados con el editor de texto como utf-8 (sin BOM)
B. Reciben un header utf-8
C. Tu base de datos tiene codificación utf8

No deberías hacer ninguna modificación extra, si por las dudas tu servidor está pasando algún header extraño, podés forzar todo a utf-8 con lo siguiente

tus html con un meta utf-8
tus php (aunque contengan html con un meta utf-8 declarado), al inicio:
Código:
header("Content-Type: text/html;charset=utf-8");
en tu .htaccess ( si usas Apache)
Código:
AddDefaultCharset off
AddCharset utf-8 .js .html
y en tu conexión a la BD
Código:
$sql_hostname = 'localhost';
$sql_login = xxxx;
$sql_password = 'xxxx';
$sql_base = 'xxxxx';
$conectar_BD = mysql_connect($sql_hostname,$sql_login,$sql_password);
$seleccion_BD = mysql_select_db($sql_base,$conectar_BD);
mysql_set_charset("utf8",$conectar_BD); 
No olvides el primer punto
Tomare en cuenta todo eso,
ahorita lo corregi pero de una forma demasiado forzada y nada estetica que podria traer dificultades de adaptacion en el futuro cuando la web crece un poco mas en archivos.

tendré estas dos versiones, usare lo que me dices pero respaldando la otra, no vaya a hacer verdad.


tengo un index donde cargo todas las paginas y la barra de menús genérica, en ella pongo la codificacion

Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

por ahora...
es que con esa codificacion hacia lo demas bien de guardar pero la vista de la pagina en general se veia toda codificada extraña
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #4 (permalink)  
Antiguo 08/05/2013, 23:30
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Envia datos con otra codificacion en ajax, problema

Cita:
Iniciado por minombreesmm Ver Mensaje
Tomare en cuenta todo eso,
ahorita lo corregi pero de una forma demasiado forzada y nada estetica que podria traer dificultades de adaptacion en el futuro cuando la web crece un poco mas en archivos.

tendré estas dos versiones, usare lo que me dices pero respaldando la otra, no vaya a hacer verdad.


tengo un index donde cargo todas las paginas y la barra de menús genérica, en ella pongo la codificacion

Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

por ahora...
es que con esa codificacion hacia lo demas bien de guardar pero la vista de la pagina en general se veia toda codificada extraña
Fijate que pasa con un archivo que si bien tiene un meta utf-8, en el editor de texto fue guardado como iso (ansi/ascii)
http://foros.emprear.com/codificar/e...ificacion.html

En algunos navegadores te aparecerá el signo de interrogación, en otros, IE por ejemplo, una suerte de cuadro blanco

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 09/05/2013, 11:44
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Envia datos con otra codificacion en ajax, problema

Cita:
Iniciado por emprear Ver Mensaje
Fijate que pasa con un archivo que si bien tiene un meta utf-8, en el editor de texto fue guardado como iso (ansi/ascii)
http://foros.emprear.com/codificar/e...ificacion.html

En algunos navegadores te aparecerá el signo de interrogación, en otros, IE por ejemplo, una suerte de cuadro blanco

SAludos
ya guarda bien pero no estoy seguro que codificación sea pero le puse utf-8 a todo me imagino que ya la agarro

uso esta funcion para insertar
Código PHP:
Ver original
  1. function cleanString($string){
  2.  
  3.     $string=trim($string);    
  4.  
  5.     $string=htmlspecialchars($string);
  6.  
  7.    
  8.     $string=nl2br($string);
  9.  
  10.     return $string;
  11.  
  12. }
para corroborar
cuando pongo la comillas doble lo guarda asi &quot;
¿esta bien verdad?

entonces para mostrar lo guardado uso la misma funcion que uso para guardar.

el problema es que con utf-8 la pagina cuando pongo ó me muestra el �

no entiendo.. y tengo que hacer un cleanString tambien de eso mmm
¿que se podra hacer alli?

o simplemente debo usar la codificación de caracteres y ponerlo manualmente cada vez que quiera poner un acento en un menú de la pagina? así lo hacen todos? la manera facil es en modo de diseño en dreamweaver pero es esto correcto?

o hay otra manera de que pueda escribir mi codigo html y en el acentos?
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #6 (permalink)  
Antiguo 09/05/2013, 13:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Envia datos con otra codificacion en ajax, problema

no debería tener que usar nada de eso, fijate

http://foros.emprear.com/ajax/html-css-js-ajax/
usa ajax php y mysql
descargá el zip con el código, todo en utf-8 forzando como te dije por las dudas

además el .htaccess tiene
Código:
AddCharset utf-8 .js
AddCharset utf-8 .css
baja el zip con el código, y tambien el zip con el sql
no hacen falta entidades ni htmlspecialchars(), etc

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 10/05/2013, 15:52
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Envia datos con otra codificacion en ajax, problema

Cita:
Iniciado por emprear Ver Mensaje
no debería tener que usar nada de eso, fijate

http://foros.emprear.com/ajax/html-css-js-ajax/
usa ajax php y mysql
descargá el zip con el código, todo en utf-8 forzando como te dije por las dudas

además el .htaccess tiene
Código:
AddCharset utf-8 .js
AddCharset utf-8 .css
baja el zip con el código, y tambien el zip con el sql
no hacen falta entidades ni htmlspecialchars(), etc

Saludos
muchas gracias,
sabes ya se soluciono el problema, puse todo en utf-8 y las palabras en los menus no le hice nada de conversion automatica simplemente puse el codigo de la con acento manualmente, yo creo que asi deberia ser o no?..
y bueno probare esa al ternativa que me das
muchas gracias compañero :D
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:45.