Bom dia Pessoal Estou aprendendo ajax com jquery para um carrinho de compra mas estou com uma dificuldade, vou explicar o meu projeto para que entendam minha dificulade. Possuo um banco temporário carrinho que é criado para cada cliente ao entrar na página, onde no mesmo ficam armazenado os dasdos dos produtos. No site possuo um pagina chamada detalhes do produto, e nela possuo um formulário que envia o código do produto para a página do carrinho de compra. na página de carrinho de compra eu uso ajax e jquery para remover itnes do carrinho e para alterar quantidade de itens do produto. 1º problema, caso eu exclua todos os itens do carrinho e depois e pressione a tecla f5 para atualizar a página, o post da página aterior não é perdido, ou o carrnho acaba sendo criado novamente sem escolhar o produto, pois existe este post da página detalhes. 2º problema, Não estou conseguindo somar os subtotais para gerar o tatal da compra 3º problema, eu tenho um include no site chamado quantidade de itens, onde ficaria armazenado o total de itens do carrinho independete da página que o cliente esteja, mas eu consgio fazer isso apenas na página de carrinho quando o usuário vai para outra página, este valor é perdido. vou colocar o meu codigo aqui para você olharem, é a primeira vez que trabalho com ajax e jquery, e estou ficando desesperada, pois meu prazo está acabando e ainda tenho a parte de cálculo do frete pra fazer e não sei nem por onde começar, por favor caso alguém tenha um tempo, me dê uma luz de como solucionar este problema Desde já grata pela atenção de todos $(document).ready(function(){
$(".remover a").click (function(){
var cod_item=$(this).attr("rel")
//alert(cod_item)
if ($(this).attr("rel") != ''){
$.ajax({
type: "GET",
url: "remover_item.asp",
data: "id="+cod_item+"",
success: function(remover){
if(remover == "ok"){
$("#item_"+cod_item).remove();
//resetnado form
//fim reset form
}
}
})
}
return false
})
$(".up").blur(function(){
//$(".up").blur(function(){
var cod_item=$(this).attr("id")
//alert(cod_item)
if (cod_item != ''){
//alert("não vazio")
//$("#caracteres input").blur(function(){
//alert ("on blur entrou");
var quantidade=$(this).attr("value"); //pega o value do input
var quant_antiga = $("#valor_antigo"+cod_item.substring(3)).attr("value"); //recupera o valor do input hiden
//var subt= $("#t_"+cod_item.substring(3)).attr("value");
//alert("sub " +subt);
//alert(quantidade);
var cod_produto= cod_item.substring(3); //tira a string do cod_item
//alert(cod_produto);
//alert ("antiga quantidade");
//alert(quant_antiga);
if(quant_antiga != quantidade){ //se a quantidade antiga não for = a quantidade
//alert ("cai vai para o ajax")
$.ajax({//chama o ajax
type: "GET",
url: "alterar_item.asp",
data: "id="+cod_item+"&quant="+quantidade+"", //passa os parametro da querystring(id e quant)
success: function(subtotal){ //funcao para recuperar oa resposta do .asp
//alert("Atualizando valores")
if(subtotal == "não estoque"){
alert("Estoque Insuficiente");
$("#qt_"+cod_produto).val(quant_antiga);
} else if (subtotal == "zero") {
alert("Foi inserido quantidade de valor nulo (zero)");
$("#qt_"+cod_produto).val(quant_antiga);
} else if (subtotal == "não numero") {
alert("A quantidade inserida não é um numero");
$("#qt_"+cod_produto).val(quant_antiga);
} else {
var subt= $("#t_"+cod_item.substring(3)).val();
alert("sub " +subt);
separando = subtotal.split("-");
$("#subtotal_"+cod_produto).html(separando[0]);//altera o valor do subtotal
//alert ("cod_item"+cod_item.substring(3));
$("#t_"+cod_item.substring(3)).val(separando[2]);
$("#t_"+cod_item.substring(3)).val(separando[2]);
alert(separando[2])
alert(cod_item.substring(3));
//$("#t_"+cod_item.substring(3)).val(separando[2]);
//altera o valor do total hiden
//alert(separando[0]);
$("#uni_"+cod_produto).html(separando[1]);
$("#valor_antigo"+cod_item.substring(3)).val(quantidade);//altera o value do input hiden
}
}
})
}
}
return false
})
})
agora a minha página de carrinho, eu uso asp, mas vou postar só para caso seja necessario alguma análize, vou postar apenas as partes do carrinho
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script src="ajax.js" type="text/javascript"></script> //o ajax aqui é o codigo acima que está separado
<%' *****************************************************
' Verificando se o banco temporário existe
'*******************************************************
if session("carrinho")="" or isempty(session("carrinho"))=true then
session("carrinho")=Request.ServerVariables("REMOTE_ADDR")
'Verificando se existe um banco de dados com o mesmo nome
Set Arquivo = Server.CreateObject("Scripting.FileSystemObject")
'response.write "fso caminho " & caminho & FName & "<br>"
FileName=Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
If Arquivo.FileExists(FileName) Then
Arquivo.DeleteFile FileName
'response.write "carrinho deletado"
end if
set Arquivo = nothing
' *****************************************************
' Criando banco temporário
'*******************************************************
Dim bancodados
'caminho=Server.Mappath("temp_carrinho/") & "\"
Set bancodados = CreateObject("ADOX.Catalog")
bancodados.Create "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=" & Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
Set bancodados = Nothing
'response.write "banco criado"
' *****************************************************
' Criando tabela do banco temporário
'*******************************************************
Set conexao = Server.CreateObject("ADODB.Connection")
caminho = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
conexao.open caminho
strsql = "CREATE TABLE carrinho "
strsql = strsql & "( "
strsql = strsql & "id_carrinho AUTOINCREMENT, "
strsql = strsql & "cod_produto int, "
strsql = strsql & "produto text, "
strsql = strsql & "quantidade int, "
strsql = strsql & "valor_varejo MONEY, "
strsql = strsql & "valor_atacado MONEY, "
strsql = strsql & "promocao_varejo MONEY, "
strsql = strsql & "promocao_atacado MONEY, "
strsql = strsql & "ip char(50),"
strsql = strsql & "estoque int,"
strsql = strsql & "peso MONEY,"
strsql = strsql & "Primary Key (id_carrinho) "
strsql = strsql & ");"
Set rs_carrinho = Server.CreateObject("ADODB.Recordset")
rs_carrinho.open strsql, conexao, 3,3
'rs_carrinho.close
set rs_carrinho=nothing
'conexao.close
set conexao=nothing
'response.write "<br> tabela criada"
' *****************************************************
' Adicionando itens do produto no carrinho
'*******************************************************
if request.form("codigo")<>"" or isEmpty(request.form("codigo"))=false then
'response.write "codigo" & request.form("codigo")
set conexao = Server.CreateObject("ADODB.Connection")
set rs_carrinho = server.CreateObject ("adodb.recordset")
conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
sql_carrinho="select * from carrinho"
rs_carrinho.open sql_carrinho,conexao,3,3
rs_carrinho.addnew
rs_carrinho("cod_produto")=request.form("codigo")
rs_carrinho("produto")=request.form("nome_produto")
rs_carrinho("quantidade")=1
rs_carrinho("valor_varejo")=request.form("valor")
rs_carrinho("valor_atacado")=request.form("valor_atacado")
rs_carrinho("promocao_varejo")=request.form("promocao_varejo")
rs_carrinho("promocao_atacado")=request.form("promocao_atacado")
rs_carrinho("peso")=request.form("peso")
rs_carrinho("ip")=session("carrinho")
rs_carrinho("estoque")=request.form("estoque")
rs_carrinho.update
end if
'response.write "<br> registros cadastrados"
else
if request.form("codigo")<>"" or isEmpty(request.form("codigo"))=false then
'Se a session("carrinho") não é vazio, então apenas adicionamos o produto na cesta
set conexao = Server.CreateObject("ADODB.Connection")
set rs_carrinho = server.CreateObject ("adodb.recordset")
conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
sql_carrinho="select * from carrinho where cod_produto=" &request.form("codigo")& ""
rs_carrinho.open sql_carrinho,conexao,3,3
'verifica se o produto já esta no carrinho
if rs_carrinho.eof=true then
'se não adiciona ao carrinho
rs_carrinho.addnew
rs_carrinho("cod_produto")=request.form("codigo")
rs_carrinho("produto")=request.form("nome_produto")
rs_carrinho("quantidade")=1
rs_carrinho("valor_varejo")=request.form("valor")
rs_carrinho("valor_atacado")=request.form("valor_atacado")
rs_carrinho("promocao_varejo")=request.form("promocao_varejo")
rs_carrinho("promocao_atacado")=request.form("promocao_atacado")
rs_carrinho("peso")=request.form("peso")
rs_carrinho("ip")=session("carrinho")
rs_carrinho("estoque")=request.form("estoque")
rs_carrinho.update
'response.write "adicionando ao carrinho"
else 'verificar se está sendo solicitado alteração de quantidade
end if
rs_carrinho.close
set rs_carrinho =nothing
conexao.close
set conexao=nothing
end if
end if
%>
<%if session("carrinho") <> "" or isEmpty(session("carrinho"))=false then
set conexao = Server.CreateObject("ADODB.Connection")
set rs_carrinho = server.CreateObject ("adodb.recordset")
conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("temp_carrinho/" & session("carrinho") &".mdb")
sql_carrinho="select * from carrinho order by id_carrinho desc"
'RESPONSE.WRITE sql_carrinho
rs_carrinho.open sql_carrinho,conexao,3,3
if rs_carrinho.eof=false then
rs_carrinho.movefirst
response.write session("carrinho")%>
<form action="#" method="post">
<table id="caracteres" width="569" border="0" cellspacing="2" cellpadding="2">
<tr bgcolor="#999999" >
<td width="240" height="23" class="titulo_table">PRODUTOS</td>
<td width="70" class="titulo_table">QTDADE</td>
<td width="78" class="titulo_table">VALOR UNITÁRIO</td>
<td width="79" class="titulo_table">SUBTOTAL</td>
<td width="70" class="titulo_table">REMOVER ITEM</td>
</tr>
<%
do while rs_carrinho.eof=false
if cor="#ffffff" then
cor="#e1e1e1"
else
cor="#ffffff"
end if%>
<tr bgcolor="<%=cor%>" id="item_<%=rs_carrinho("cod_produto")%>">
<td><%=server.HTMLEncode(rs_carrinho("produto"))%></td>
<td class="conteudo_table">
<input type="hidden" name="valor_antigo<%=rs_carrinho("cod_produto")%>" id="valor_antigo<%=rs_carrinho("cod_produto")%>" value="<%=rs_carrinho("quantidade")%>" />
<input type="text" class="up" name="qt_<%=rs_carrinho("cod_produto")%>" id="qt_<%=rs_carrinho("cod_produto")%>" value="<%=rs_carrinho("quantidade")%>" />
<br /> estoque= <%=rs_carrinho("estoque")%></td>
<%if rs_carrinho("quantidade")<6 then %>
<td class="conteudo_table">
<div id="uni_<%=rs_carrinho("cod_produto")%>">
<%=formatcurrency(rs_carrinho("valor_varejo"))%>
</div>
</td>
<td class="conteudo_table" >
<div id="subtotal_<%=rs_carrinho("cod_produto")%>" >
<%subtotal=rs_carrinho("quantidade")*rs_carrinho("valor_varejo")
response.write formatcurrency(subtotal)%>
<input id="t_<%=rs_carrinho("cod_produto")%>" name="t_<%=rs_carrinho("cod_produto")%>" type="hidden" class="subtotal1" value="<%=subtotal%>" />
</div>
</td>
<%else%>
<td class="conteudo_table">
<div id="uni_<%=rs_carrinho("cod_produto")%>">
<%=formatcurrency(rs_carrinho("valor_atacado"))%>
</div>
</td>
<td class="conteudo_table">
<div id="subtotal_<%=rs_carrinho("cod_produto")%>">
<%subtotal=rs_carrinho("quantidade")*rs_carrinho("valor_atacado")
response.write formatcurrency(subtotal)%>
</div>
</td>
<%end if%>
<td class="conteudo_table">
<div class="remover">
<a href="#" rel="<%=rs_carrinho("cod_produto")%>" title="Remover item do carrinho" >
<img src="/images/remove_item.gif" alt="Remover Item do carrinho" />
</a>
</div>
</td>
</tr>
<%rs_carrinho.movenext
loop%>
</table>
</form>
<div id="total">
total
</div>
<%else
response.write "Carrinho de compras vazio"%>
<%end if%>
<%end if%> grata