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.