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

URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP

Estas en el tema de URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP en el foro de Frameworks JS en Foros del Web. Bueno.. al devolverme los datos me devuelve ? en ves de tildes... porque??? Como reparo eso? Este es mi codigo Cita: <script type="text/javascript"> function AJAX(){ ...
  #1 (permalink)  
Antiguo 11/11/2005, 09:30
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
Exclamación URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP

Bueno.. al devolverme los datos me devuelve ? en ves de tildes... porque???

Como reparo eso?

Este es mi codigo

Cita:

<script type="text/javascript">
function AJAX(){ //funcion que sirve para conectarse
var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
var ajax = false;
for(var i=0 ; !ajax && i<ajaxs.length ; i++){
try{ ajax = new ActiveXObject(ajaxs[i]); }
catch(e) { ajax = false; }
}
if(!ajax && typeof XMLHttpRequest!='undefined') {
ajax = new XMLHttpRequest();
}
return ajax;
}


function devolver_datos(obj){
var ajax = AJAX();
if(!ajax){
alert("Imposible : Error AJAX");
return false;
}

document.getElementById('mostrar_detalle').innerHT ML = "<center><strong>Cargando... Espere por favor </center></strong>"

ajax.open("POST","devolver_detalle.asp",true);
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
document.getElementById("mostrar_detalle").innerHT ML=ajax.responseText;
}
}

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("codigo="+encodeURIComponent(obj.codigo. value)+"&periodo="+encodeURIComponent(obj.periodo. value) );
}
</script>


Un abrazo
  #2 (permalink)  
Antiguo 11/11/2005, 09:47
perrogrun
Invitado
 
Mensajes: n/a
Puntos:
Juas, yo estoy en lo mismo pero lo resuelvo a lo bestia, en "devolver_detalle.asp":

texto = Replace(texto,"á","&aacute")
texto = Replace(texto,"é","&eacute")
(...)
response.write(texto )
  #3 (permalink)  
Antiguo 11/11/2005, 09:58
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
no creo que sea una buena solucion... lo que pasa es qeu cuando escribo desde el navegador

devolver_detalle.asp

si me salen con las tildes, pero no me salen cuando las llamo con AJAX
  #4 (permalink)  
Antiguo 11/11/2005, 10:13
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
siempre q hay problemas con caracteres raros no olviden mandar los headers correcpondientes:

header('Content-Type: text/html; charset=ISO-8859-1');
o
header('Content-Type: text/xml; charset=ISO-8859-1');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';


a y otra cosa, encodeURIComponent no codifica las comillas, cuidado con el escape de caracteres en php/asp, yo prefiero usar esta que agrega codificacion para el "+" y "/"

/* funcion mejorada de escape() para AJAX */
function encode(v)
{
return escape(v).replace(/\+/ig, '%2B').replace(/\//ig, '%2F');
}
__________________
Internet Explorer SuckS
Download FireFox
  #5 (permalink)  
Antiguo 11/11/2005, 10:30
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
mmm. yo programo en ASP... como mandar los headers correspondientes??


y eso se coloca en devolver_detalle.asp verdad?
  #6 (permalink)  
Antiguo 11/11/2005, 18:00
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
no se nada de asp, y esos headers se escriben antes de enviar cualquier texto como respuesta
__________________
Internet Explorer SuckS
Download FireFox
  #7 (permalink)  
Antiguo 11/11/2005, 20:56
 
Fecha de Ingreso: diciembre-2003
Mensajes: 65
Antigüedad: 20 años, 11 meses
Puntos: 1
Los headers si me sirvieron pero mediante el metodo GET, encambio con el metodo POST ya no me funciona =(
  #8 (permalink)  
Antiguo 11/11/2005, 21:07
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
Ohhh!!! y ahora... quien podrá salvarme...????
chapuASP... estas ahi???
  #9 (permalink)  
Antiguo 12/11/2005, 03:00
Avatar de Mignola  
Fecha de Ingreso: noviembre-2002
Ubicación: Templo Shaolin
Mensajes: 167
Antigüedad: 22 años
Puntos: 1
Hola,

No se si llego tarde pero por si acaso:
<%response.Charset="ISO-8859-1"%>

Para el tema de acentos y la ñ yo lo que hago es un escape() del texto a enviar. En el archivo que recibe les paso un urldecode() (no se cual es equialente en ASP) y si tengo que devolver algo, le paso un htmlentities() (no se si hay equivalente en ASP)

No se si sera de ayuda...
  #10 (permalink)  
Antiguo 12/11/2005, 08:23
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
estuve probando algunas cosas y parece que no hace falta hacer un urldecode() cuando de reciben los datos codificados, se decodifican automaticamente.. lo probe enviando una cadena escapada y mostrandola sin decodificar, sale lo mismo y con las comillas escapadas, entonces deduzco que se decodifican y luego se aplica los magic_quotes_gpc (php)
__________________
Internet Explorer SuckS
Download FireFox
  #11 (permalink)  
Antiguo 12/11/2005, 13:23
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
Yupiiiiiiiiiiii

Por finnnnnnnnnn Gracias Mignola.. puse eso en "devolver _detalle.asp".. y ya me funciona.. muchas gracias...

No uso Escape ni nada de eso.. envio por el POST o por en GET y si me reconoce las tildes y eñes... normal..

Justo en dia en que debia presentar mi trabajo a l cliente me salvaste... gracias.

Un Abrazo.

Cita:
Iniciado por Mignola
Hola,

No se si llego tarde pero por si acaso:
<%response.Charset="ISO-8859-1"%>

Para el tema de acentos y la ñ yo lo que hago es un escape() del texto a enviar. En el archivo que recibe les paso un urldecode() (no se cual es equialente en ASP) y si tengo que devolver algo, le paso un htmlentities() (no se si hay equivalente en ASP)

No se si sera de ayuda...
  #12 (permalink)  
Antiguo 12/11/2005, 15:33
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 21 años
Puntos: 2
no sé como sea en ASP, pero yo trabajo con PHP
y para mandar textos utilizo las funciones de PHP para convertiro texto a UTF8

buscá si hay un equivalente para ASP
  #13 (permalink)  
Antiguo 13/11/2005, 19:28
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
ya me lo dio Mignola...

es esto:
<%response.Charset="ISO-8859-1"%>
  #14 (permalink)  
Antiguo 25/11/2005, 20:21
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 9 meses
Puntos: 11
ahora lo hago en PHP y coloco esto

header('Content-Type: text/xml; charset=ISO-8859-1');

y a pesar de ello no me reconoce las tildes...
  #15 (permalink)  
Antiguo 26/11/2005, 12:30
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
vean esta pag de prueba... con iso-8859-1 y escape() anda todo perfecto.
http://www.torneosnydus.com/test.php
la parte de php es muy sencilla, mando este header:

header('Content-Type: text/plain; charset=ISO-8859-1');
__________________
Internet Explorer SuckS
Download FireFox
  #16 (permalink)  
Antiguo 26/11/2005, 15:15
 
Fecha de Ingreso: julio-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Utilizar escape no es una buena solución. Aunque encodeURIComponent utilice UTF-8 es mejor. http://xkr.us/articles/javascript/encode-compare/
  #17 (permalink)  
Antiguo 26/11/2005, 15:32
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
me estas cargando ahi mismo podes ver que no funciona, ya probe enviando en utf-8 y recibo los mismos caracteres raros con encodeURIComponent.
de todas las pruebas q hice la que siempre me funciono es la funcion escape mejorada que puse mas arriba.
__________________
Internet Explorer SuckS
Download FireFox
  #18 (permalink)  
Antiguo 26/11/2005, 16:14
 
Fecha de Ingreso: julio-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Siento cargarte. Lo que pasa es que hay que saber porqué una cosa funciona y otra no.

El objeto XMLHttpRequest y encodeURIComponent trabajan con la codificación de caractéres UTF-8 y no con ISO-8859-1, como viene por defecto en Apache, que seguramente es el que todos utilicemos, por lo que surgen todos estos problemas.
Una solución es crear un .htaccess con la siguiente directiva: AddDefaultCharset off
con lo que nos ahorraríamos tener que codificar o descodificar en la parte del servidor, pero esta solución no siempre es posible.

Otra solución y seguir utilizando encodeURIComponent es la de pasar los datos que recibimos en nuestros scripts a ISO-8859-1 con la función utf8_decode de PHP y para enviarlos hacemos la operación inversa mediante utf8_encode y creamos una cabecera indicando la codificación, header("Content-type: text/html; charset=utf-8");

En ese ejemplo tuyo encodeURIComponent nunca funcionaría, el primer problema que surge es que en el documento HTML ya le estás indicando en la etiqueta meta <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> que estás trabajando con ISO-8859-1 así que no sirve de mucho hacer ese cacao de caracteres.

Para mí, lo mejor es usar siempre UTF-8. Siempre recomiendo este artículo de minid: http://www.minid.net/2005/05/24/utf-8-vale-la-pena/
  #19 (permalink)  
Antiguo 28/08/2007, 07:57
Avatar de oabareload  
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP

txt=unescape(ajax.responseText);
txt2=txt.replace(/\+/gi," ");
document.getElementById(contenidor).innerHTML=txt2 ;

Lo encontré en http://ajax.elmultisuso.com y si funciona...
  #20 (permalink)  
Antiguo 16/09/2007, 19:43
 
Fecha de Ingreso: septiembre-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Re: URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP

Perfecto, tenia el mismo problema y lo solucione con el header("...") en PHP.

Muchas Gracias.

Saludos,

Gonzalo
  #21 (permalink)  
Antiguo 26/12/2007, 17:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: URGENTE Tildes - Ajax no Reconoce por el Metodo POST + ASP

Gente, como andan?
Gracias por toda la data.
Aprovecho para preguntarles lo siguiente:


Tengo 3 select dependientes, que sacan info de una base access, con ajax tengo el problema que en el segundo select, cuandomandauna cadena al proximo y esta tiene espacios, la corta y el dato sólo aparece hasta donde encuentra el primer espacio. Alguien sabe por que es esto?
Les paso el codigo (no se asusten, es horrendo, je! )

<%
' me fijo si viene algun valor en el querystring, si no viene nada, no hago nada
if request.querystring("name") <> "" then

componentName = request.querystring("name")
id = request.querystring("id")
componentValue = request.querystring("value")
nextComponentName = request.querystring("nextComponentName")
nextTabIndex = request.querystring("nextTabIndex")
twoNextComponentName = request.querystring("twoNextComponentName")
twoNextTabIndex = request.querystring("twoNextTabIndex")


if((cstr(componentName) = cstr("select4")) and (cstr(id) = cstr(13))) then

response.write "<select name=" & nextComponentName & " id="& nextTabIndex & " class=cbo>"
response.write "<option value=></option>"

Set obj = New Sistema
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = obj.oLugarEntregaContrato(componentValue)
Do while not rs.EOF
response.write "<option value="& cstr(rs("'IdEntregaCont'")) & ">"&rs("Nombre")&"</option>"
' response.write "<option value='"& rs("IdEntregaCont") &"'"
' If cstr(nextComponentName)=cstr(rs("IdEntregaCont")) then
' response.Write " selected "
' end If
' response.write ">"& rs("Nombre") &"</option>"
rs.movenext
Loop
If rs.state=1 then rs.close
Set rs = nothing
Set obj = Nothing
response.write "</select>"

end if


if((cstr(componentName) = cstr("select")) and (cstr(id) = cstr(6))) then


response.write "<select name="&nextComponentName&" id="&nextTabIndex&" class=cbo onChange=javascript:recargaComboAjax("& nextComponentName &","& nextTabIndex &","& twoNextComponentName &","& twoNextTabIndex &","& nextComponentName &","& nextTabIndex &",this.value);>"
response.write "<option value=></option>"

Set obj = New Sistema
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = obj.oListadoContrato(session("campana"),Session("c liente"),componentValue)
Do while not rs.EOF
response.write "<option value="& rs("Idcontrato") & ">"&rs("Contrato")&"</option>"
rs.Movenext
Loop
If rs.state=1 then rs.close
set rs = NOthing
Set obj = Nothing

response.write "</select>"

end if

end if

%>
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:14.