Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con tildes en AJAX

Estas en el tema de Problema con tildes en AJAX en el foro de Frameworks JS en Foros del Web. Hola a todos... Saben tengo un problema con las tildes en el <div></div> donde retorno los datos de una página secundaria. Me éxplico mejor, tengo ...
  #1 (permalink)  
Antiguo 08/09/2006, 11:43
Avatar de charmilion  
Fecha de Ingreso: septiembre-2006
Ubicación: Lima - Perú
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta Problema con tildes en AJAX

Hola a todos... Saben tengo un problema con las tildes en el <div></div> donde retorno los datos de una página secundaria.

Me éxplico mejor, tengo una página con un cuadro de texto donde escribo un nombre, al precionar un tecla activa una función en javascript, esta función es el bendito AJAX que hace el pedido de los datos a una página secundaria. La página secundaria es un pequeño código asp que recoge datos de una base de datos de acuerdo al dato que le envie de la página principal.

Función llamarasincrono AJAX, dentro de esta función se invoca otra función llamada cargarpagina, que se encarga de obtener los datos de la página secundaria.
url = 'combo.asp'
var1 = es el valor que se envia de mi campo de texto al presionar una tecla en mi página principal, esto se pasa como parametro de busqueda para mi pagina secundaria, ejm: "ma"
var2 = es otro parametro de busqueda (dato numerico) que se envia para la pagina secundaria
id_contenedor = viene hacer el nombre que le puse al ID de mi DIV en mi página principal, Aqui en este DIV se muestra los datos que retornen de mi pagina secundaria


function llamarasincrono(url, var1, var2, id_contenedor){
var pagina_requerida = false;
if(var1 != ""){
document.getElementById(id_contenedor).style.visib ility = "visible";
document.getElementById(id_contenedor).style.displ ay = "block";
if (window.XMLHttpRequest){
// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest();
}
else if (window.ActiveXObject){
// pero si es IE
try{
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (e){
// en caso que sea una versión antigua
try{
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
}
}
}
else{
return false;
}
pagina_requerida.onreadystatechange = function (){
// función de respuesta
cargarpagina (pagina_requerida, id_contenedor);
}
// asignamos los métodos open y send
pagina_requerida.open ('POST', url, true);
pagina_requerida.setRequestHeader('Accept-Language', 'sp');
pagina_requerida.setRequestHeader('Pragma', 'no-cache');
pagina_requerida.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
pagina_requerida.send ('asig1=' + var1 + '&facu=' + var2);
}
else{
document.getElementById(id_contenedor).style.visib ility = "hidden";
document.getElementById(id_contenedor).style.displ ay = "none";
}
}


Función para cargar los datos que vienen de la página secundaria

function cargarpagina (pagina_requerida, id_contenedor){
id_contenedor = document.getElementById(id_contenedor);
if(pagina_requerida.readyState==1){
//para cuando la pagina aun no se termina de cargar, es como un preload
id_contenedor.innerHTML = "Cargando...";
}
else if (pagina_requerida.readyState == 4){
if(pagina_requerida.status == 200){
//mostramos los datos dentro de la div, pagina cargada
id_contenedor.innerHTML = pagina_requerida.responseText;
id_contenedor.style.background = "#E8F3FF";
}
else if(pagina_requerida.status == 404){
id_contenedor.innerHTML = "La página no existe";
}
else{
//mostramos el posible error
id_contenedor.innerHTML = "Error: ".pagina_requerida.status;
}
}
}


por lo que he estado averiguando, me parece que es esta linea es mi error
id_contenedor.innerHTML = pagina_requerida.responseText;
las tildes se distorcionan, apareciendo ?.

el código de mi página secundaria es:

combo.asp, Es mi página secundaria que obtiene los nombres de los cursos que tengo almacenado en una tabla de mi base de datos (sql server 2000), si miran bien se daran cuenta que asig1 y facu vienen desde mi función llamarasincrono.

<!--#include virtual="aulas/arch/conec.asp"-->
<%
vista = true
clave = ""&request.Form("asig1")
facu = request.Form("facu")
if vista and clave <> "" then
sql = "Select * From cursos Where nombre LIKE '%"&clave&"%' and prop = "&facu
set rs = conex.execute(sql)
while not rs.Eof
%>
<a href="javascript:setName('<%=rs("nombre")%>')" class="span5"><%=rs("nombre")%></a><br>
<%
rs.MoveNext
wend
end if
%>


El resultado al mostrar los datos de mi página secundaria en la principal es mas o menos así:

matemáticas --- lo muestra así >>>: matem?cas
informáticos --- lo muestra así >>>: inform?cos


POR FAAA... si alguien supiera como hacer que se muestren correctamente las tildes para este caso, se lo agredeceria un monton...

PD: si les puedo ayudar en algo de código asp o ajax.... me pueden hacer consultas, aunque no soy ningún experto... les respondere lo más rápido posible.

GRACIAS otra vez a todos.
  #2 (permalink)  
Antiguo 10/09/2006, 18:55
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
mira, yo tube exactamente tu mismo problema, lo que debes ahcer es que en la respuesta que mandas con ASP necesitas especificar el la codificacion del texto que estas enviando, en este caso necesitas aclarar que es iso-8859-1, realmente nunca he usado ASP, pero imagino que debe ser algo asi request.setCharset("iso-8859-1") o algo asi, supongo que tu sabes eso mejor que yo

have funnnnn
  #3 (permalink)  
Antiguo 22/10/2007, 20:03
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años
Puntos: 0
Re: Problema con tildes en AJAX

y como se hace con php?
Necesito corregir esos simbolos raros que salen cuando llamo con ajax
gracias por la ayuda: este es mi codigo:

Cita:
<script type="text/javascript">
function principal(pagina,divID)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");

}
if(XMLHttpRequestObject)
{
var mostrar = document.getElementById(divID);
XMLHttpRequestObject.open("GET", pagina, true);
XMLHttpRequestObject.onreadystatechange = function()
{
if(XMLHttpRequestObject.readyState == 1){
mostrar.innerHTML = "<img src=\"img/ajax_loading.gif\" width=\"32\" height=\"32\" />";
}else{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
//header('Content-Type: text/plain; charset=ISO-8859-1');

mostrar.innerHTML = XMLHttpRequestObject.responseText;

}
}
}

XMLHttpRequestObject.send(null);
}


}
</script>

este es el div dentro de body
Cita:
<div id="ventana" style="position:absolute; left:206px; top:89px; width:800px; height:141px; z-index:2;"></div>
y con esto linkeamos

Cita:
<a href="#" onclick="return principal('modulos/contenido.php?id=6884','ventana');">Skynet Corporativo</a></li>
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #4 (permalink)  
Antiguo 23/10/2007, 02:49
Avatar de charmilion  
Fecha de Ingreso: septiembre-2006
Ubicación: Lima - Perú
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problema con tildes en AJAX

Mira Kotosh, a estas alturas te puedo decir que si vas a pasar tildes con AJAX de una pagina a otra usa el metodo GET, y en cualquier otro caso yo prefiero usar POST... y a demas en la pagina secundaria que vas a llamar usando tu AJAX en la cabecera de la pagina coloca esta linea: <% Response.Charset="ISO-8859-1" %>, pero esto es ASP, y con esto ya no e vuelto a ver esos codigos raros (mira bien el codigo que puse lineas arriba). Con PHP no recuerdo bien pero no creo q varie mucho. Espero que te ayude
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

SíEste tema le ha gustado a 1 personas




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