Jump to content


Photo

"reload De Div"


  • Faça o login para participar
2 replies to this topic

#1 Raul Lima

Raul Lima

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 18/12/2007, 14:52

Pessoal seguinte tenho uma tabela como mostrada abaixo, que controle o acesso dos usuários, quando clico em algum checkbox ele via ajax já executa uma ação no banco e me dá uma mensagem em uma div como mostrada.
No exemplo da imagem estou add um usuário, está tudo funcionando perfeitamente.
O que eu queria e ñ estou conseguindo é fazer com que quando ele add ou exclua o usuário, ele dê um reload na div q contem a tabela de usuários, pq do jeito que está ele add o usuário, mas não mostra na tabela, só mostra se eu carrego a página toda novamente.

Posted Image

Função que add usuário, na chamada da função ele envia uma url onde é feito todo o processo no banco...
function addUser(url) {
	ajax = initHttpRequest();
	username = document.form_criar_usuario.nome_novo_usuario.value;
	password = document.form_criar_usuario.senha_novo_usuario.value;
	conf_password = document.form_criar_usuario.conf_senha.value;
	if(username == "" || password == "" || conf_password == "")
		alert("Preencha os campos corretamente!");
	else
	if(password != conf_password) {
		alert("Confirmação de senha não bate com a senha fornecida!");
		document.form_criar_usuario.senha_novo_usuario.value = "";
		document.form_criar_usuario.conf_senha.value = "";
	}
	else {
	url = (url+'&username='+username+'&password='+password);
	ajax.onreadystatechange = function() {
		if(ajax.readyState == 4) {
			if(ajax.status == 200) {
					if(window.ActiveXObject) {
					document.getElementById('resposta_usuario').innerHTML = ajax.responseText;
				}
				else if(document.implementation && document.implementation.createDocument) {
					document.getElementById('resposta_usuario').innerHTML = ajax.responseText;
				}
			}
			else {
				alert('Desculpe houve um problema com a requisição.');
			}
			document.form_criar_usuario.nome_novo_usuario.value = "";
			document.form_criar_usuario.senha_novo_usuario.value = "";
			document.form_criar_usuario.conf_senha.value = "";
		}
	}
	ajax.open('GET', url, true);
	ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	ajax.setRequestHeader("Content-type","text/html; charset=ISO-8859-1");
	ajax.setRequestHeader("encoding","ISO-8859-1");
	ajax.setRequestHeader("Pragma","no-cache");
	ajax.send(null);
	}
}

Pra variar ninguém???

Edição feita por: Raul Lima, 18/12/2007, 14:08.


#2 usuario666

usuario666
  • Visitantes

Posted 20/12/2007, 14:58

cara,
eu não tenho certeza, mas eu acho que se vc adicionar a linha abaixo no fim do seu código vai dar certo, pq vc envia os dados depois que dá o responseText,

[codebox] document.getElementById('resposta_usuario').innerHTML = ajax.responseText;
[/codebox]

tenta aí cara, e se não der tenta esse de baixo

[codebox]function addUser(url) {
ajax = initHttpRequest();
username = document.form_criar_usuario.nome_novo_usuario.value;
password = document.form_criar_usuario.senha_novo_usuario.value;
conf_password = document.form_criar_usuario.conf_senha.value;
if(username == "" || password == "" || conf_password == "")
alert("Preencha os campos corretamente!");
else
if(password != conf_password) {
alert("Confirmação de senha não bate com a senha fornecida!");
document.form_criar_usuario.senha_novo_usuario.value = "";
document.form_criar_usuario.conf_senha.value = "";
}
else {
url = (url+'&username='+username+'&password='+password);

ajax.open('GET', url, true);
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-type","text/html; charset=ISO-8859-1");
ajax.setRequestHeader("encoding","ISO-8859-1");
ajax.setRequestHeader("Pragma","no-cache");
ajax.send(null);

ajax.onreadystatechange = function() {

if(ajax.readyState == 4) {
if(ajax.status == 200) {
if(window.ActiveXObject) {
document.getElementById('resposta_usuario').innerHTML = ajax.responseText;
}
else if(document.implementation && document.implementation.createDocument) {
document.getElementById('resposta_usuario').innerHTML = ajax.responseText;
}
}
else {
alert('Desculpe houve um problema com a requisição.');
}
document.form_criar_usuario.nome_novo_usuario.value = "";
document.form_criar_usuario.senha_novo_usuario.value = "";
document.form_criar_usuario.conf_senha.value = "";
}
}
[/codebox]

abraços

Edição feita por: usuario666, 20/12/2007, 15:02.


#3 DarkDemo

DarkDemo

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 21/12/2007, 14:36

Basta seguir a lógica:

Se a página onde vc faz a tabela é diferente de onde ela aparece.. faça como o exemplo abaixo:

Ajax.asp
[codebox]<script src="selected.js"></script>
Select a CD:
<input name = "cad" id = "cad" onBlur="showCD(this.value)">
<div id="txtHint"></div>
<div id = "top">
<!--#include file="Bd.asp"-->
</div>
[/codebox]

selected.js
[codebox]var xmlHttp

function showCD(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="Getcd.asp";
url=url+"?q="+str;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
document.getElementById("txtHint").innerHTML="<center><img src='ajax-loader(5).gif'>" ;
}

function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML="";
document.getElementById("cad").value = "";
document.getElementById("top").innerHTML=xmlHttp.responseText;
}
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
[/codebox]

Getcd.asp
[codebox]<%
response.expires=-1
sql="INSERT INTO Tbl_Usu ( Login ) VALUES ('" & request.querystring("q") & "' )"

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ReqTec\Bd\Req.mdb")
set rs = Conn.Execute(Sql)

response.Redirect("Bd.asp")
%>[/codebox]

Bd.asp
[codebox]<%
response.expires=-1
sql="SELECT Login FROM Tbl_Usu ORDER BY Login"

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ReqTec\Bd\Req.mdb")
set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql, conn
response.write("<table>")
do until rs.EOF
for each x in rs.Fields
Response.write("<tr><td><b>" & x.name & "</b></td>")
response.write("<td>" & x.value & "</td></tr>")
next
Rs.MoveNext
loop
response.write("</table>")
%>[/codebox]


O que eu faço nesse exemplo:

No Ajax.asp eu tenho um input para inserção dos dados, e um include para já mostrar a página que me tras o resultado assim que ela for carregada.

O selected.js não passa de um arquivo js de Ajax normal.

O Getcd.asp faz a inserção dos dados no bd, e logo após faz a chamada da página Bd.asp, que por sua vez monta a tabela novamente, e o selected.js faz a inserção do resultado do Bd.asp na página principal, sem reload.


Bom.. caso não tenha entendido a minha lógica, da um berro aki..

Abraços.....




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq