Foros del Web » Programando para Internet » ASP Clásico »

Problema con Acentos (AJAX + POST)

Estas en el tema de Problema con Acentos (AJAX + POST) en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy intentando enviar un formulario con Ajax usando el metodo POST, Al enviar áéíóú se inserta áéÃ*óú. He puesto: Response.AddHeader "Content-Type", "text/html; ...
  #1 (permalink)  
Antiguo 07/06/2010, 15:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Problema con Acentos (AJAX + POST)

Hola a todos, estoy intentando enviar un formulario con Ajax usando el metodo POST, Al enviar áéíóú se inserta áéÃ*óú.

He puesto:

Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"

Pero el problema persiste

Estos son los archivos que uso:

Enviar.asp


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Expires = 0
session.LCID = 1034 'formatos en castellano
'para que no den problemas los acentos y la ñ
Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script type="text/javascript">
function CreaXHR()
{
var ref = false;

try { // Procedimiento para crear un objeto
// XMLHttpRequest compatible entre distintos
ref = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e1) { // navegadores Web
try {
ref =
new ActiveXObject('Microsoft.XMLHTTP');
} catch (e2) {
objXML = false;
}
}

if (!ref && (typeof XMLHttpRequest != 'undefined' || window.XMLHttpRequest))
ref = new XMLHttpRequest();

return ref;
}


function enviaformcontacto(){
var formcontacto = document.getElementById('formcontacto');
var iIndice;
var strContenido = "";
var strSeparador = "";

// Recorremos el input que hay
for(iIndice = 0; iIndice < 1; iIndice++) {
strContenido = // concatenando los datos
strContenido + strSeparador +
formcontacto.elements[iIndice].id + '=' +
encodeURIComponent(formcontacto.elements[iIndice].value);
strSeparador = '&';
}

var resultadocontacto = document.getElementById('resultadocontacto');
var objXML = CreaXHR();
if(objXML) // Si tenemos el objeto
{
// Enviamos la solicitud al servidor
objXML.open('POST', 'guardar.asp',false);
// con las cabeceras apropiadas
objXML.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
objXML.setRequestHeader('Content-Length', strContenido.length);
objXML.send(strContenido);
resultadocontacto.innerHTML = '<hr /><p>' + '<b>' + objXML.responseText + '</b></p>';
}

return false;
}
</script>
</head>
<body>

<form name="formcontacto" id="formcontacto">
<textarea name="mensajecontacto" rows="10" cols="30" id="mensajecontacto"></textarea>
<br>
<a href="javascript:void(0)" onClick="return enviaformcontacto();">Enviar</a>
</form>
<br>
<div id="resultadocontacto"></div>
</body>
</html>

Guardar.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file="conexion.asp" -->
<%
Response.Expires = 0
session.LCID = 1034 'formatos en castellano
'para que no den problemas los acentos y la ñ
Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body>
<%
mensajecontacto=request.Form("mensajecontacto")
SQLContacto="INSERT INTO mensajecontactos (mensajecontacto) VALUES ('"&mensajecontacto&"')"
db.Execute(SQLContacto)
Response.Write(SQLContacto)
%>
</body>
<%
conexion.Close
set conexion = Nothing
%>

¿Como podría solucionarlo?
  #2 (permalink)  
Antiguo 08/06/2010, 11:04
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Respuesta: Problema con Acentos (AJAX + POST)

Consegui solucionarlo, dejo aqui como por si a alguien le ocurre algo similar poniendo en Guardar.asp

Response.AddHeader "Content-Type", "text/xml; charset=utf-8"

en lugar de

Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"
  #3 (permalink)  
Antiguo 08/06/2010, 12:03
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Respuesta: Problema con Acentos (AJAX + POST)

No, lo siento me equivoque, no lo he arreglado aún, la verdad es que no comprendo lo que ocurre , si imprimo la SQL me aparece bien:

INSERT INTO mensajecontactos (mensajecontacto) VALUES ('áéíóú')

Sin embargo cuando miro en la base de datos me sigue apareciendo áéÃ*óú

¿alguna idea?
  #4 (permalink)  
Antiguo 08/06/2010, 12:58
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema con Acentos (AJAX + POST)

Hola

Puedes usar las funciones escape y unescape con eso quedará solventado el problema

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 08/06/2010, 13:06
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Respuesta: Problema con Acentos (AJAX + POST)

Hola Adler, gracias por responder, escape y unescape son funciones de javascript, ¿como podria hacer uso de ellas en este caso?
  #6 (permalink)  
Antiguo 08/06/2010, 13:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 20 años, 11 meses
Puntos: 0
Respuesta: Problema con Acentos (AJAX + POST)

Efectivamente Adler, lo he solucionado usando en lugar de:

encodeURIComponent(formcontacto.elements[iIndice].value);

Esto:
escape(formcontacto.elements[iIndice].value);

De esta forma es independiente usar en Guardar.asp

Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"
o
Response.AddHeader "Content-Type", "text/xml; charset=utf-8"

Funciona con cualquiera de las 2

Muchisimas gracias

Última edición por sqa212; 08/06/2010 a las 13:40

Etiquetas: acentos, ajax, post
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 13:55.