Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mano Trindade

enviar comentário atravez do Javascript para banco de Dados ASP

Recommended Posts

Olá Pessoal do furom Imasters meu nome é Hamilton eu sou novo por aqui e tenho visto coisas boas por cá e decidi-me inscrever porque estou precisando de uma ajudinha com a implementação de uma aplicação em ASP. Estou implementado um formulário ao qual após submeter o mesmo abri uma div mostrando o loading e após terminar o envio de dados, abri uma outra apresentando a resposta que a mensagem foi enviada com sucesso usando o Ajax. O código original Ajax foi desenvolvido para trabalhar com o envio de dados em PHP, mas tentei adapta-lo para ASP e os eventos realizam mas da um ERRO quando o ficheiro de envio ASP recebe os dados.

 

<- Codigo do Form ->

<!--#include file="conexao.asp"-->
<%
id = request("id")
%>

<div id="form">
    <form name="coment" id="coment" method="post" action="enviarcomentario_ev.asp"  onsubmit="return Valida_comentario();">
                <fieldset>
                    <legend>Deixe um Comentário</legend>

           <div class="loading">
       <p><img src="images/loading.gif" alt="Loading" width="50" height="50"/>Enviando</p>
       </div>
       <div id="resposta"></div>


                    <label><span>Nome:</span><input id="nome" type="text" name="nome" /></label>

                    <label><span>Comentario:</span><textarea id="comentario"name="comentario"></textarea></label>

                    <input type="hidden" name="idevento" value="<%=listar_eventos("id")%>" />
                    <input type="submit" value="Enviar Comentário" class="botao" id="enviar_contato"/>

                    <input type="reset" value="Limpar Formulário" class="botao" />
                </fieldset>
            </form>
       </div>

 

 

 

 

<- Codigo Ajax ->

   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
   <script type="text/javascript" src="js/javascript.js" charst="utf-8"></script> //chama a função localizado no header

$(function(){
type: "POST",
$('#enviar_contato').click(function(){
	var nome = $("#nome").val();
	var idevento = $("#idevento").val();
	var comentario= $("#comentario").val();
	if (nome!='' & comentario!='' & idevento!='')
	{
		$('.loading').show();
		$('form')[0].reset();
		$('#coment').fadeTo("slow", 0.3);

		data:("enviarcomentario_ev.asp", {nome: nome, idevento:idevento, comentario:comentario},


			function(retorno){
				$('.loading').fadeOut();
				$('#resposta').html(retorno).fadeIn();
				$('#coment').fadeTo("slow", 1);	
				$('#resposta').fadeOut(15000);
		}) 
	}
	return false;
})
})

 

<- Codigo enviacomentario.asp ->

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conexao.asp"-->



<% Dim nome, comentario, datahora, idevento, inserir

  nome = request("nome")
  comentario = request("comentario")
  datahora = now()
  idevento = request("idevento")




   set inserir = Server.CreateObject("ADODB.RECORDSET")
  inserir.open "INSERT INTO comentarios_eventos (nome,comentario,datahora,idevento,statuscoment) VALUES ('"& nome &"','"&   comentario &"','"& datahora &"','"& idevento &"',1)",conexao

  response.Redirect("comentarioenviado.asp")
%>

 

 

<- Erro de conexão ->

 

Script error detected at line 20.

Source line: inserir.open "INSERT INTO comentarios_eventos

(nome,comentario,datahora,idevento,statuscoment) VALUES ('"& nome &"','"& comentario &"','"& datahora &"','"& idevento &"',1)",conexao

 

 

Description: [Microsoft][Controlador Microsoft Access de ODBC] Tipo de dados incorrecto na expressão de critérios.

 

NOTA: Este tudo funciona correcto se eu não chamar o JavaScript. Por favor me ajudem, ja estou aflito com isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem vindo ao forum da Imasters :)

 

No laboratório de scripts tem alguns exemplos de uso do ajax com o ASP, recomendo o exemplo de cidade / estado, é bem facil de entender e está bem explicado pelo autor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum numero de erro ?

se sim, poste o numero.

dá um response.write na sua string SQL pra ver o que esta sendo passado , verifique se os dados estao com o tipo correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, ele da erro sim. ah o banco de Dados é Access, por exemplo se eu abandonar esse evento JavaScript e fazer um envio normal ele envia os dados para o banco de dados, mas como no site que eu estou desenvolvendo eu não quer que seja carregada uma nova pagina quando o utilizados submete um comentário procurei esta forma que eu acho esteticamente mais agradável de fazer o envio sem ter que carregar uma nova pagina.

 

Script error detected at line 20.

Source line: inserir.open "INSERT INTO comentarios_eventos

(nome,comentario,datahora,idevento,statuscoment) VALUES ('"& nome &"','"& comentario &"','"& datahora &"','"& idevento &"',1)",conexao

 

 

Description: [Microsoft][Controlador Microsoft Access de ODBC] Tipo de dados incorrecto na expressão de critérios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de erro é sua amiga.

Veja o que fala:

Description: [Microsoft][Controlador Microsoft Access de ODBC] Tipo de dados incorrecto na expressão de critérios.

 

Isso significa que você está tentando inserir uma string num campo que só aceita numeros por exemplo.

 

Para isso, terás de converter para Cint, ou o formato adequado para o campo em questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Mas se eu enviar sem passar por este processo do JavaScript ele não dá este erro. O envio é feito com normalidade mas só que após os dados estarem colocados no banco de dados ele faz um response.redirect para outra pagina que da conta que a mensagem foi enviada mas como isso não é muito saudável para uma aplicação por isso eu estou tentando fazer assim com o Ajax. Neste sentido, então quer dizer que o erro esta no Ajax que se calhar esta enviando dados numéricos. que não estou sabendo aonde. Se não ti importares de dar uma mãozinha na correção do código eu agradecia

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o tipo de dados esta correto, veja se não esta passado texto em um tipo numérico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi fiz a verificação e tudo ja esta funcionando mas só esta função n esta dando.

 

Pronto basicamente o código é o mesmo mas só que agora o erro é outro

 

<% Dim nome, comentario, inserir, datahora, ideventos

  nome = request("nome")
  comentario = request("comentario")
  datahora=now()
  ideventos= request.(cint("idevento"))


   set inserir = Server.CreateObject("ADODB.RECORDSET")
  inserir.open "INSERT INTO comentarios_eventos (nome,comentario, datahora, idevento, statuscoment) VALUES ('"& nome &"','"&comentario&"','"&datahora&"','"& (cint (ideventos))&"',1)",conexao 
  response.Write("O comentário foi enviado com sucesso! Estando à Aguardar pela Moderação.") 
%>

 

E da Este erro

 

Source line: ideventos= request.(cint("idevento"))

Description: Identificador esperado

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim está errado

 

ideventos= request (cint("idevento"))

 

teste assim

 

ideventos= cint(request("idevento")) 

 

se não der certo post o valor de request("idevento") para vermos o que está sendo passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda continua a não passar

 

Erro

 

ideventos= cint(request("idevento"))

Description: Tipo incorrecto: 'cint'

 

Eu havia tentado da outra forma, e o envio é feito mas ele não pegava o ID da pagina onde foi feito o comentário.

 

Fiz assim:

ideventos=request.querystring("idevento")

 

set inserir = Server.CreateObject("ADODB.RECORDSET")

inserir.open "INSERT INTO comentarios_eventos (nome,comentario, datahora, idevento, statuscoment) VALUES ('"& nome &"','"&comentario&"','"&datahora&"',

'"& (cint (idevento))&"',1)",conexao

 

faz o envio mas converte o valor para zéro (0). Imagina se o ID pagina onde foi feito o comentário for 59, o que vai ao banco de dados é Zéro (0)e o statuscoments continua sempre sendo 1. O que ele terá que fazer é trazer o ID da pagina e colocar na no banco de dados para o statuscoments ser 2,3,4... por aí fora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que tem neste request?

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde EXATAMENTE está o erro agora

 

poste a mensagem e a linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi

 

está dando apenas erro de logica ou está apresentando alguma mensagem de erro ainda?

 

de onde vem este numero?

 

precisa verificar passo a passo onde o valor está sendo perdido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça isso

 

Response.write(request("idevento"))

 

e post aqui o que aparecer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok então vou explicar passo a passo.

 

Tudo começa aqui no formulário para fazer comentário (eventos.asp) que tem um id = request("id") que será solicitado quando o utilizador submeter o formulario.

 

Estes são os campos

                    <label><span>*Nome:</span><input id="nome" type="text" name="nome" /></label>

                    <label><span>*Comentario:</span><textarea id="comentario" name="comentario"></textarea></label>

                    <input type="hidden" name="idevento" value="<%=listar_eventos("id")%>" />
                    <input type="submit" value="Enviar Comentário" class="botao" id="enviar_contato"/>

                    <input type="reset" value="Limpar Formulário" class="botao" />

 

 

 

quando o utilizador submeter o comentário, serão enviados o id do evento ao qual foi comentado, juntamente com o nome e o comentário do utilizador.

e clicar em enviar é chamada esta função em ajax que vai fazer ocorrer um evento loading enquanto os dados estão sendo colocados no Script ASP.

 

$(function(){

$('#enviar_contato').click(function(){

	var nome = $("#nome").val();
	var idevento= $("#idevento").val();
	var comentario= $("#comentario").val();

{
		$('.loading').show();
		$('form')[0].reset();
		$('#coment').fadeTo("slow", 0.3);	
		$.post("enviarcomentario_ev.asp",{nome: nome, comentario: comentario, idevento: idevento},
			function(retorno){
				$('.loading').fadeOut();
				$('#resposta').html(retorno).fadeIn();
				$('#coment').fadeTo("slow", 2);	
				$('#resposta').fadeOut(15000);
				$('#erro').fadeOut(5000);
		}) 
	}
	return false;
})
})

 

 

Este script pega todos os dados da Form provenientes do Ajax e envia para o Banco de dados ACCESS, e quando tudo tiver concluído, ira acontecer outro evento no ajax (retorno) que ir apresentar o response Write numa div, sem ter que carregar uma pagina nova.

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conexao.asp"-->
<% response.charset = "utf-8" %>



<% Dim nome, comentario, inserir, datahora, ideventos

  nome = request("nome")
  comentario = request("comentario")
  datahora=now()
 ideventos= cint(request("idevento"))


   set inserir = Server.CreateObject("ADODB.RECORDSET")
  inserir.open "INSERT INTO comentarios_eventos (nome,comentario, datahora, idevento, statuscoment) VALUES ('"& nome &"','"&comentario&"','"&datahora&"','"& idevento&"',1)",conexao

  response.Write("O comentário foi enviado com sucesso! Estando à Aguardar pela Moderação.") 
%>

 

 

Se eu não tivesse utilizado o ajax para fazer o loading, ele enviava normalmente com tudo correcto. Não sei se desta vez faço intender

 

Response.write(request("idevento"))

Apareceu este erro

 

Script error detected at line 20.

 

Source line: inserir.open "INSERT INTO comentarios_eventos (nome,comentario, datahora, idevento, statuscoment) VALUES ('"& nome &"','"&comentario&"','"&datahora&"','"& idevento&"',1)",conexao

 

Description: [Microsoft][Controlador Microsoft Access de ODBC] Tipo de dados incorrecto na expressão de critérios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.