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

Problema con Ajax y Asp

Estas en el tema de Problema con Ajax y Asp en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy haciendo mis primeras pruebas con Ajax y no he tenido problemas con crear el objeto y enviar datos tanto con Get ...
  #1 (permalink)  
Antiguo 19/03/2010, 10:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Problema con Ajax y Asp

Hola a todos, estoy haciendo mis primeras pruebas con Ajax y no he tenido problemas con crear el objeto y enviar datos tanto con Get como con Post y luego imprimo en un Div, aqui dejo el codigo.

El Problema es el siguiente:
Tengo 3 paginas, Index.asp, vertabla.asp, proceso.asp

En Index.asp tengo un Formulario y un Div, el formulario llama a una funcion Javascrip y esta ejecuta codgo Ajax que le envia los datos a Procesos.asp.
Pocesos.asp inserta en la bd el registro enviado y responde por medio de un alert que no hay error, luego de oprimir aceptar en mi div se actualice la pagina vertabla.asp

Que debo poner o hacer despues de insertar en la base de datos para actualizar el div donde esta vertabla.asp?

si respondo que todo salio bien, se borra la tabla y sale el mensaje, si no hago nada la tabla se queda igual, quiero utilizar la reutiizacion de mi codigo vertabla.asp, o sea, no volver a poner al final de procesos.asp todo el codigo igual al de vertabla.asp, probe con include y tampoco.

Ese es mi problema como hago para que se vuelva a cargar en el div la pagina vertabla.asp.

gracias a todos.

Index.asp:

<html>
<head>
<script language="javascript" type="text/javascript">
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.status == 200) {
if (http.responseText.indexOf('invalid') == -1) {
// Armamos un array, usando la coma para separar elementos
results = http.responseText.split(",");
document.getElementById("campoMensaje").innerHTML = results[0];
enProceso = false;
}
}
}
}

function verificaUsuario() {
if (!enProceso && http) {
var valor = escape(document.getElementById("emailUsuario").val ue);
var url = "Procesos.asp?emailUsuario="+ valor;
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse;
enProceso = true;
http.send(null);
}
}

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) { xmlhttp = false; }
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) { xmlhttp = false; }
}
return xmlhttp;
}

var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest

</script>
</head>

<body onload="cargarContenido('Vertabla.asp', 'campoMensaje')
<form action="post">
Ingrese su email:
<input type="text" name="emailUsuario" id="emailUsuario">
<INPUT type="Button" value="Verificar si existe" onclick="verificaUsuario();">
</form>
<div id="campoMensaje"></div>
</body>
</html>
  #2 (permalink)  
Antiguo 19/03/2010, 14:57
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Problema con Ajax y Asp

navegando un poco encontre esto:

http://www.ribosomatic.com/ejemplos/pagina/6/ en esta pagina hay unos ejemplos buenos en PHP, yo estoy buscando en asp, en los 2 primeros ejemplos, uno ingresa datos a la bd y los muestra en una tabla y otro los edita.

es basicamente lo que quiero pero en Asp como ya lo puse, el siguiente codigo es muy similar a mi procesos.asp, aqui esta:

<?php
//Desarrollado por Jesus Liñán
//[email protected]
//ribosomatic.com
//Puedes hacer lo que quieras con el código
//pero visita la web cuando te acuerdes

//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "ribosomatic";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);

//variables POST
$idemp=$_POST['idempleado'];
$nom=$_POST['nombres'];
$dep=$_POST['departamento'];
$suel=$_POST['sueldo'];

//actualiza los datos del empleados
$sql="UPDATE empleados SET nombres='$nom', departamento='$dep', sueldo='$suel' WHERE idempleado=$idemp";

mysql_query($sql,$con);

include('consulta.php');
?>

Si pueden ver la ultima instruccion es "include('consulta.php');", esta pagina despues de agregar el registro al a bd envia una pagina (reutilizacion de codigo), esto es lo que no he podido hacer.

el ejemplo funciona bien pero en php, hay alguna forma de incluir esa pagina en Asp?

encontre tambien esta forma de recibir los datos del servidor
if (ajax.readyState==4) {
//mostrar los nuevos registros en esta capa
divResultado.innerHTML = ajax.responseText
//mostrar un mensaje de actualizacion correcta
divFormulario.innerHTML = "<p style=\"border:1px solid red; width:400px;\">La actualizaci&oacute;n se realiz&oacute; correctamente</p>";
}
parece muy obvia pero no lo sabia, aqui hay 2 divs para mostrar los resultados, uno que viene de la pagina solicitada y uno que se imprime estatico, me parece interesante y lo coloco por si a alguien tambien le parece y le sirve.


Gracias.

Última edición por jochesfor; 19/03/2010 a las 16:01
  #3 (permalink)  
Antiguo 19/03/2010, 16:37
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Problema con Ajax y Asp

Yo la verdad no he entendido cual es el problema

Mencionas un archivo vertabla.asp que no colocas y del que solo se hace referencia en una función js que tampoco pones y que no sabemos que hace.

Suponiendo que incluyas (include) ese archivo, ¿el problema es que quieres reejecutarlo al salir de la función Ajax?

Si es asi, entonces como que ya no tiene mucho sentido usar Ajax y como que debes de refrescar la página entera en el evento donde llamas al Ajax

Quizá ocupo una explicación más detallada y el código involucrado

Saludos

Última edición por Myakire; 19/03/2010 a las 16:43
  #4 (permalink)  
Antiguo 19/03/2010, 17:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Problema con Ajax y Asp

Gracias Myakire por el interes.
no he colocado todos los codigos por que no queria precisamente eso, que se confundiera mi inquietud, mi inquietud no es como se carga la pagina vertabla.asp en el div "campomensaje".

en este momento mi index.asp esta practicamente vacio, pero voy a ir llenandolo poco a poco, por eso no quiero refrescar toda la pagina, de hecho en este momento asi me funciona y lo que estoy haciendo es actualizarlo a Ajax.

la funcion "cargarContenido" solo carga en el div cualquier pagina que le envie y no me produce ningun problema, esta funcion la consegui en internet y le hice algunos pequeños cambios.

function cargarContenido(pagina,destino){
var contenedor;
var ajax;

contenedor = document.getElementById(destino);
ajax = nuevoAjax();
ajax.open("GET", pagina, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText;
}
}
ajax.send(null);
}

Repito, con esta funcion no tengo ningun problema, la pagina vertabla.asp es una pagina que hace una consulta y muestra con <table> el resultado, tampoco tengo problemas con esta pagina.

en mi pagina Index.asp, quiero poner un menu y utilizando la funcion "cargarContenido" me muestre diferentes paginas en el mismo div, por eso quiero que al llenar un formulario (o cualquier otra cosa que se me ocurra), se almacene en la bd y se actualice el div con los datos actuales de la bd.

No se si pudo ver los ejemplos que coloque en php, eso es exactamente lo que quiero pero en asp.

gracias
  #5 (permalink)  
Antiguo 20/03/2010, 05:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Problema con Ajax y Asp

Hola

A ver si esto te da alguna idea

otorgar_permisos

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%
  3. Response.CodePage = 65001
  4. Response.CharSet = "utf-8"
  5. response.Buffer=TRUE
  6. %>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11. <title>Metodologia Asincronica (AJAX)</title>
  12. <script language="javascript" type="text/javascript">
  13. /* NO BORRAR ESTA SECCION*/
  14. var enProceso = false; // lo usamos para ver si hay un proceso activo
  15. var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
  16.  
  17. function getHTTPObject() {
  18.     var xmlhttp;
  19.     /*@cc_on
  20.     @if (@_jscript_version >= 5)
  21.        try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  22.            } catch (e) {
  23.           try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  24.           } catch (E) { xmlhttp = false; } }
  25.     @else
  26.         xmlhttp = false;
  27.     @end @*/
  28.     if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
  29.        try {xmlhttp = new XMLHttpRequest();
  30.        } catch (e) { xmlhttp = false; }}
  31.     return xmlhttp;}
  32.  
  33. /* ESTA FUNCION MANEJARA LA RESPUESTA */
  34. function handleHttpResponse() {
  35. if (http.readyState == 4) {
  36.     if (http.status == 200) {
  37.         if (http.responseText.indexOf('invalid') == -1){
  38.             results = http.responseText.split(",");
  39.             document.getElementById(results[0]).innerHTML = results[1];
  40.             enProceso = false;}
  41.         }
  42.     else
  43.             {
  44.             results = http.responseText.split(",");
  45.             document.getElementById(results[0]).innerHTML = results[1];
  46.             enProceso = false;
  47.             }
  48.     }
  49. }
  50.  
  51. /* ESTA FUNCION ENVIARA LA RESPUESTA*/
  52. function Privilegios(UserID,UserStatus,Mostrar) {
  53. var UID, UST;
  54. if (!enProceso && http) {
  55.     UID = document.getElementById(UserID).value;
  56.     UST = document.getElementById(UserStatus).value;
  57.     var url = "Otorgar_Permiso_AJAX.asp?UI="+ Mostrar + "_" + UID + "*" + UST + "&UID="+ Math.random();
  58.     http.open("GET", url, true);
  59.     http.onreadystatechange = handleHttpResponse;
  60.     enProceso = true;
  61.     http.send(null);}}
  62. </script>
  63. </head>
  64. <%response.Flush()%>
  65. <body>
  66. <form>
  67. <table>
  68. <tr><th>#</th>
  69.     <th>Nombre</th>
  70.     <th>Privilegio</th>
  71.     <th>Grabar</th>
  72.     <th>Mensaje</th></tr>
  73. <%
  74. response.Flush()
  75. on error resume next
  76. strcon="Provider=Microsoft.Jet.OLEDB.4.0;"&_
  77.         "Data Source="&server.MapPath("./database.mdb")&";"
  78. set conexion = Server.CreateObject("ADODB.Connection")
  79. conexion.open strcon
  80.  
  81. BuscarSQL="select * from Usuarios;"
  82. set Buscar=conexion.execute(BuscarSQL)
  83. if Err=0 then
  84.     if Buscar.EOF=FALSE then
  85.         i=1
  86.         while Buscar.EOF=FALSE%>
  87. <tr><th><%=i%></th>
  88.     <td>Nombre<%=i%> --> <%=Buscar.Fields("nombre")%>
  89.         <input type="hidden" name="nom<%=i%>" id="nom<%=i%>" value="<%=Buscar.Fields.Item("id").value%>" /></td>
  90.     <td><select name="id<%=i%>" id="id<%=i%>" >
  91.         <%
  92.         select case Buscar.fields.item("privilegio").value
  93.             case "D" %>
  94.             <option value="-">-</option>
  95.             <option value="D" selected="selected">Denny</option>
  96.             <option value="A">Allow</option><%
  97.             case "A" %>
  98.             <option value="-">-</option>
  99.             <option value="D">Denny</option>
  100.             <option value="A" selected="selected">Allow</option><%
  101.             case else%>
  102.             <option value="-" selected="selected">-</option>
  103.             <option value="D">Denny</option>
  104.             <option value="A">Allow</option><%
  105.         end select%>
  106.         </select></td>
  107.     <td>
  108.     <input type="button" onclick="Privilegios('nom<%=i%>','id<%=i%>','msj<%=i%>');" value="Asignar" />
  109.     </td><th id="msj<%=i%>"></th></tr>
  110. <%      i=i+1
  111.         Buscar.MoveNext
  112.         wend
  113.         response.Flush()
  114.     else
  115.         respuesta="Erro. No se encontro parametro a consultar"
  116.     end if
  117. else
  118.     respuesta="Error. No se puede realizar"
  119. end if%>
  120. <tr><td id="msjerror" colspan="5"></td></tr>
  121. </table>
  122. </form>
  123. </body>
  124. </html>
  125. <%response.End()%>

otorgar_permiso_ajax

Código ASP:
Ver original
  1. <%
  2. Response.CodePage = 65001
  3. Response.CharSet = "utf-8"
  4. response.Buffer=TRUE
  5. 'conexion a la tabla
  6. sub plugin
  7. end sub
  8. if isnull(request.QueryString("UI")) then
  9.     response.Write("Error")
  10.     response.End()
  11. else
  12.     'SEPARAMOS EL IDENTIFICADOR DE MENSAJES, DE LOS VALORES A TRATAR
  13.     a=split(request.QueryString("UI"),"_")
  14.     'VOLVEMOS A SEPARAR LOS DATOS PARA LAS EJECUCIONES PERTINENTES
  15.     b=split(a(1),"*")
  16.     if b(1)="-" then
  17.         respuesta="Seleccione el Privilegio"
  18.     else
  19.         strcon="Provider=Microsoft.Jet.OLEDB.4.0;"&_
  20.             "Data Source="&server.MapPath("./database.mdb")&";"
  21.         set conexion = Server.CreateObject("ADODB.Connection")
  22.    
  23.         conexion.open strcon
  24.  
  25.         'CREAMOS LA ESTRUCTURA DE CONSULTA Y ACTUALIZACION
  26.         BuscarSQL="select * from Usuarios where ID="&b(0)&";"
  27.         ActualizarSQL = "UPDATE Usuarios"&_
  28.                         " SET Privilegio = '" & b(1) &"'"&_
  29.                         " WHERE id = " & b(0) & ";"
  30.    
  31. '   respuesta = "a0 =" & a(0) &_
  32. '               "<br/>" &_
  33. '               "a1 =" & a(1) &_
  34. '               "<br/>" &_
  35. '               "b0 =" & b(0) &_
  36. '               "<br/>" &_
  37. '               "b1 =" & b(1) &_
  38. '               "<br/>" &_
  39. '               "SQL Buscar =" & BuscarSQL &_
  40. '               "<br/>" &_
  41. '               "SQL Update =" & ActualizarSQL
  42. '   response.Write "msjerror,<br/>"&respuesta
  43. '   response.End()
  44.     'EJECUTAMOS LA SENTENCIA
  45.         set Buscar=conexion.execute(BuscarSQL)
  46.         'VERIFICAMOS QUE NO TENGAMOS ERRORES DE CONSULTA
  47.         if Err=0 then
  48.             'VERIFICAMOS QUE NO SEA EL FINAL DE LA TABLA
  49.             if Buscar.EOF=FALSE then
  50.                 'EJECUTAMOS NUESTRA ACTUALIZACION
  51.                 conexion.execute(ActualizarSQL)
  52.                 'VERIFICACION DE NO ERROR DE ACTUALIZCION
  53.                 if Err=0 then
  54.                     'SI TODO MARCHO PERFECTAMENTE
  55.                     respuesta="Dato Grabado Perfectamente"
  56.                 else
  57.                     'ALGUN ERROR DE ACTUALIZACION, DESLEGAMOS
  58.                     respuesta="Error. No se actualizo dato. "&ActualizarSQL
  59.                 end if
  60.             else
  61.                 'EN CASO DE NO ENCONTRAR EL ID
  62.                 respuesta="Erro. No se encontro parametro a consultar"
  63.             end if
  64.         else
  65.             'EN CASO DE ERROR DE ESTRUCTURA DE LA BUSQUEDA
  66.             respuesta="Error. No se puede realizar. "&BuscarSQL
  67.         end if
  68.     end if
  69.     '/****************************************/
  70.     'NO MOVER LA ESTRUCTURA
  71.     'A[0] = ID DONDE SE MOSTRARA LA RESPUESTA
  72.     'RESPUESTA= CUALQUIER MENSAJE DE ERROR O VICEVERSA
  73.     '/****************************************/
  74.         if Err=0 then
  75.             mje_en=a(0)&","&respuesta
  76.             response.Write mje_en
  77.             response.Flush()
  78.         else
  79.             mje_en="msjerror"&","&respuesta
  80.             response.Write mje_en
  81.             response.Flush()
  82.         end if
  83.     '/****************************************/
  84. end if
  85. response.End()
  86. %>

Para insertar registros en otorgar_permiso_ajax cambia update por insert into

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;" />
  #6 (permalink)  
Antiguo 21/03/2010, 18:07
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
Respuesta: Problema con Ajax y Asp

en http://blog.creandowebs.com tengo un ejemplo de algo como lo que quieres, te voy a poner algo facil de implementar, necesitas un archivo ajax_loader.js y pones esto <script src="ajax_loader.js" type="text/javascript"></script> dentro de las etiquetas HEAD

despues en un enlace o cualquier otra opcion puedes poner el llamado a la funcion htmlData, te pondre de ejemplo un enlace:

<a href="javascript:void(20)" onclick="htmlData('cambia.asp','div_a_cambiar','en=1&opcion=1')">OPCION 1</a>

despues en el HTML ponemos el DIV que aplicara los cambios, en este caso lo llame div_a_cambiar

Al hacer click en el enlace OPCION 1 se buscara el archivo cambia.asp y con las opciones enviadas (en este caso en=1&opcion=1) generara una respuesta

Si quieres mas info ve a http://javimata.blogspot.com/2009/02...x-con-asp.html, ahi te lo explico un poco mas amplio y con un ejemplo...espero te sirva, si tienes alguna duda pues me avisas


en esta pagina tengo un ejemplo funcionando, el menu de la izquierda tienen enlaces como el que te puse arriba y carga el contenido en la parte de la izquierda
http://d10795269.a106.creandowebs.com/

en www.kainclub.com tengo otro ejemplo pero usando esta misma tecnica pero usando flash (swishmax), el menu de arriba carga con este mismo sistema el contenido en el centro... parece un flash completo no?
  #7 (permalink)  
Antiguo 12/04/2010, 13:11
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con Ajax y Asp

tengo el mismo problema... al parecer access no se actualiza tan inmediato para poder gestionar el resultado en un div en forma automatica..he probado he intentado colocando pero nada

#
Response.CodePage = 65001
#
Response.CharSet = "utf-8"
#
response.Buffer=TRUE


hay muy poca info de ajax + asp + access

alguien tiene alguna experiencia al respecto...
  #8 (permalink)  
Antiguo 13/04/2010, 06:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Problema con Ajax y Asp

Cual es el mismo problema?

Si crees que el problema que pudieras tener es por que access no se actualiza tan inmediato para poder gestionar el resultado en un div en forma automatica, intenta haciendo una llamada síncrona en el Ajax.

Saludos

Etiquetas: ajax, asp
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 06:53.