Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2013, 14:44
minombreesmm
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 9 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