Just nu i M3-nätverket
Gå till innehåll

Utföra INSERT INTO direkt på knapptryckning


greattaste

Rekommendera Poster

Jag skulle vilja hitta ett sätt att utföra ett kommando (till exempel en sql-sats - att lägga till en rad i en databas) direkt när man klickar på en textlänk - utan att ladda om sidan. Någon som vet hur man kan få till det, till exempel med hjälp av ajax?

 

Stort tack för hjälp!

 

Tråden flyttad från ASP & VBScript av moderator

 

[inlägget ändrat 2009-03-02 13:02:06 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Inga problem, det går fint det.

 

Man får ha ett click-event som triggar ajaxen.

Jag rekommenderar återigen jQuery för detta. Du får lägga till en script tagg som lägger till jqueryfunktionalitet

 

markup

<input type="button" id="add-row" value="Lägg till" />
eller
<a href="#" id="add-row" >Lägg till</a>

 

javascript ( i html sidan eller i egen js-fil som läggs till till html-sidan):

<script type="text/javascript">
$().ready(function{
 $("#add-row").click(function{
   $.post("sida_som_sköter_databas_inserten.asp",{variabel:"värde1",variabel2:"värde2"},function(){
   //om du vill göra något efter att informationen har postats
   });
 });
});
</script>

 

Länk till kommentar
Dela på andra webbplatser

greattaste

Tack för ditt inlägg. Det fungerade dock inte för mig.

 

Jag laddade ner JQuery 1.3.2 och la till:

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>

<head>
	<title></title>
<script type="text/javascript" src="js/jQuery.js"></script>
<script type="text/javascript">
$().ready(function{
 $("#add-row").click(function{
   $.post("test_success.asp",{variabel:"var
de1",variabel2:"varde2"},function(){
   //om du vill gora nagot efter att informationen har postats
   });
 });
});
</script>
</head>
<body>

<a href="#" id="add-row" >Lagg till</a>
<input type="button" id="add-row" value="Lagg till" />

</body>
</html>

 

Också innehållet i test_success.asp:

 

 

<%
Dim Connect
Set Connect = Server.CreateObject("ADODB.Connection")

ConnectionString ="DRIVER={MySQL};SERVER=mysql6.local;"_
&"DATABASE=XXXXX;UID=XXXXX;PWD=XXXX;"

Connect.Open ConnectionString

Connect.Execute(" INSERT INTO gm_values (userID, date, itemID, catID, value) VALUES ('"& Session("userID") &"', '"& Now() &"', '888', '99', '10') ")

  Connect.Close
  Set Connect = Nothing
%>

 

(Det funkar när man går in direkt på test_success.asp)

 

Var har jag gjort fel?

 

Länk till kommentar
Dela på andra webbplatser

Du får inte ha två element med samma ID!

 

om du inte skall skicka med några värden eller göra något efter att datan har postats kan man förenkla postningen:

 

 

<script type="text/javascript">
$().ready(function{
 $("#add-row").click(function{
   $.post("test_success.asp");
 });
});
</script>

 

Länk till kommentar
Dela på andra webbplatser

greattaste

Ok! jag får nog sätta mig in i det här med variablerna också, och det är klart, man vill nog att länken ska ändras till "Ta bort raden" istället för "Lägg till rad" efter att man har klickat på den.

 

 

Har testat att ta bort länken <a href="#" id="add-row" >Lagg till</a>, så att det inte ska vara två element med samma ID.

 

Men fortfarande ingen tur, raden läggs inte till i databasen hur jag än gör. Svårt att säga vad jag gör fel, om det beror på att jag har fel version av jQuery eller om jag har missat att få med något i koden?

 

Länk till kommentar
Dela på andra webbplatser

Du får skriva precis vad du vill, jag ger bara förslag/exempel.

 

felsök: blir det fel i javascriptet, och isf vad, från början eller när du klickar på knappen/länken? Har du rätt sökväg till jquery-filen?

 

Länk till kommentar
Dela på andra webbplatser

greattaste

Tror att det låg i att det var citattecken kring test_success.asp istället för apostrofer. La också till (document) i ready-villkoret.

Det fungerar nu i alla fall! Tack!

 

 

Ska nu försöka få till att värden skickas med, och tas emot av test_success.asp - och dessutom hur jag får länken att ändras efter att man klickat på den. (New Trust --> Delete Trust) Någon som kan tipsa om hur man kan lära sig detta?

---> Uppdatering: Löste ändringen av länken genom följande:


Direkt under document ready:

   $("#tabort").hide();

I kommandot för länken:

  $("#tabort").show();
   $(this).hide();

 

Värdena (variabel1, variabel2) kanske helt enkelt tas emot med Request.Form?

---> Uppdatering: Ja, så var det. Gick även att göra med QueryStrings.

 

Den fungerande koden i alla fall för att utföra asp-kommando direkt på knapptryckning med hjälp av ajax/jQuery:

 

 <html>
 <head>
   <script type="text/javascript" src="js/jquery.js"></script>
   <script type="text/javascript">
     $(document).ready(function(){
  $("#newtrust").click(function(event){
   $.post('test_success.asp');
});
});
   </script>
 </head>
 <body>
   <a href="#" id="newtrust">New Trust</a>
 </body>
 </html>

 

 

 

 

[inlägget ändrat 2009-03-02 11:14:40 av greattaste]

[inlägget ändrat 2009-03-02 11:48:45 av greattaste]

Länk till kommentar
Dela på andra webbplatser

för säkerheten rekommenderar jag att du använder $.post och använda request.form istället för querystrings.

 

Att det skulle vara enkel- eller dubbelfnuttar som var felet har jag svårt att tro men fungerar det så grejt!

 

Så här kan du göra gällande det dynamiska kommandot

 <a href="#" id="trust" rel="new">New Trust</a>

 

 $(document).ready(function(){
   $("#trust").click(function(){
     var my_method = $(this).attr("rel");
     $.post('test_success.asp',{"method":my_method},function(){
       switch (my_method)
       {
       case "new" :
         $("#trust").attr("rel","delete").text("Delete trust");
         break;
       case "delete" :
         $("#trust").attr("rel","new").text("New trust");
         break;
       }
     });
   });
 });

i 'test_success.asp' får du kolla av "method" om den skickar med "new" eller "delete" och sedan köra respe,ktive sqlkommandot

 

Jag rekommenderar att du söker mer information hos Jquery istället för att fråga här, så lär du dig lite mer också.

Edit: Vilket jag nu ser att du gjort... :thumbsup:

 

[inlägget ändrat 2009-03-02 12:07:18 av Jonas_Bo]

Länk till kommentar
Dela på andra webbplatser

greattaste

Ja, jag var inne en bra runda på jQuery, och det gick ju bra. Kommer definitivt att återkomma dit.

 

Tack för koden!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...