
28/08/2008, 14:56
|
| | Fecha de Ingreso: agosto-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses Puntos: 0 | |
Respuesta: Chat en flash y con codigos asp Hola aca les dejo la foto del error y los codigos que puse:
Este es el error:Error al escribir comentario
y exactamente los codigos que puse:
<visita fecha='27/12/2006 12:31:11'>
<autor>Usuario%201</autor>
<comentario>Este%20es%20un%20comentario%20de%20pru eba%2E%20%BFse%20ve%20bien%3F</comentario>
</visita>
<visita fecha='27/12/2006 12:31:37'>
<autor>Usuario%202</autor>
<comentario>Este%20es%20otro%20comentario%20de%20p rueba%2E%20Pues%20s%ED%2C%20se%20ve%20bien%2E</comentario>
</visita>
Como veis, se parece a un documento XML, pero le faltan dos elementos imprescindibles en todo XML: La declaración del tipo de documento y el nodo principal que contiene al resto de nodos. Más adelante veremos el porqué de este formato incompleto.
Para editar este archivo libro.txt cada vez que se incluye un comentario nuevo, usamos el objeto FileSystemObject de ASP ya que Flash de por sí solo no puede hacerlo. Además tendrá que estar habilitado el permiso de escritura en el directorio que lo contenga. Con este archivo add_comentarios.asp llevamos a cabo la operación.
<%
On Error Resume Next
' Creamos el objeto FileSystemObject llamado fs
Set fs=Server.CreateObject("Scripting.FileSystemObject ")
' Abrimos el archivo para modificarlo y nos posicionamos al final
' del archivo, por eso el 2do argumento es 8, si fuera 1 se abriría
' en modo sólo lectura
Set f=fs.OpenTextFile(Server.MapPath("/libro_visitas/libro.txt"), 8)
' Insertamos los datos enviados desde Flash
f.WriteLine("<visita fecha='"& Now &"'>")
f.Write("<autor>")
f.Write(Trim(Request("autor")))
f.WriteLine("</autor>")
f.Write("<comentario>")
f.Write(Trim(Request("comentario")))
f.WriteLine("</comentario>")
f.WriteLine("</visita>")
' Cerramos y borramos los objetos usados
f.Close
Set f=Nothing
Set fs=Nothing
' si Err=0 todo ha ido bien, este valor es devuelto
' a flash para confirmarle la operación
Response.write("error="&Err)
%>
Si os fijáis, se añade la fecha del servidor en el momento del comentario, el autor y el comentario en sí.
Para leer el archivo con los comentarios usamos el archivo comentarios.asp.
<%
Response.ContentType="text/xml"
' Abro el archivo para leerlo
Set fs=Server.CreateObject("Scripting.FileSystemObject ")
Set f=fs.OpenTextFile(Server.MapPath("/libro_visitas/libro.txt"), 1)
' Añado la declaración de documento y abro el nodo principal
Response.write("<?xml version='1.0' encoding='ISO-8859-1' ?><visitas>")
Response.Write(f.ReadAll)
' cierro el nodo principal, con lo que ya tengo
' un XML bien formado
Response.write("</visitas>")
' Cerramos y borramos los objetos usados
f.Close
Set f=Nothing
Set fs=Nothing
%>
La respuesta de este archivo es un XML bien construido que podéis ver aquí. La razón de guardar el archivo libro.txt en formato incompleto es que se facilita su actualización de nuevos comentarios. Con cada comentario nuevo simplemente tenemos que añadir al final los nuevos datos y olvidarnos.
En este punto, vamos a Flash para ver el código ActionScript necesario que va en el primer fotograma:
// ajustes iniciales -----------------------------------
System.useCodepage = true;
// evitamos problemas con los nodos en blanco
XML.prototype.ignoreWhite = true;
_global.style.setStyle("fontSize", 10);
visitas_txt.htmlText = true;
// impedimos el uso de los caracteres < y >
// que pueden dar problemas
autor_txt.restrict = "^<>";
comentario_txt.restrict = "^<>";
// fin ajustes iniciales -------------------------------
// estilos CSS para los comentarios
var my_styles:TextField.StyleSheet = new TextField.StyleSheet();
my_styles.setStyle("autor", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"11px", color:"#99CC00"});
my_styles.setStyle("fecha", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"10px", color:"#006699"});
my_styles.setStyle("comentario", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"10px", color:"#666666"});
visitas_txt.styleSheet = my_styles;
// objeto LoadVars para enviar comentarios
// y comprobar la operación
var visitas_lv:LoadVars = new LoadVars();
visitas_lv.onLoad = function() {
if (this.error == 0) {
comentarios_xml.load("/asp/comentarios.asp");
} else {
visitas_txt.text = "Error escribiendo comentario.";
}
};
// objeto XML que carga los comentarios
var comentarios_xml:XML = new XML();
comentarios_xml.onLoad = cargarComentarios;
function cargarComentarios() {
visitas_txt.text = "";
var array_temp:Array = this.firstChild.childNodes;
if (!isNaN(array_temp.length)) {
// numero de comentarios
titulo_lb.text = array_temp.length+" comentarios";
// relleno el textArea con los comentarios
array_temp.reverse();
for (var k:Number = 0; array_temp[k]; k++) {
var autor:String = unescape(array_temp[k].firstChild.firstChild.toString());
var comentario:String = unescape(array_temp[k].lastChild.firstChild.toString());
visitas_txt.text += "<p><autor>Autor: <b>"+autor+"</b></autor></p>";
visitas_txt.text += "<p><fecha>"+array_temp[k].attributes.fecha+"</fecha></p>";
visitas_txt.text += "<p><comentario>"+comentario+"</comentario></p>";
visitas_txt.text += "<p></p>";
}
}
}
// función para mandar un comentario, compruebo que el autor
// tenga por lo menos 3 caracteres y el comentario 1
function enviarComentario() {
if (autor_txt.text.length>=3 && comentario_txt.text.length>=1) {
visitas_lv.autor = escape(autor_txt.text);
visitas_lv.comentario = escape(comentario_txt.text);
visitas_lv.sendAndLoad("/asp/add_comentario.asp", visitas_lv, "POST");
}
}
// defino la función que se ejecutará el hacer click en el botón
boton_enviar.addEventListener("click", enviarComentario);
// cargo los comentarios sin intervención del usuario
// al entrar en la página
comentarios_xml.load("/asp/comentarios.asp");
Despues me descarga el libro hecho y aun sale error al escribir comentario.Ay explican que el libro.txt sirve como base para alojar los comentarios.E intentado ponerlo en otros lados,todo una alaraca y nada ayudenme porfavor..!! |