Ergebnis 1 bis 7 von 7
  1. #1
    futuregirl ist offline Grünschnabel
    registriert
    29-01-2010
    Beiträge
    3

    Javascript soll bleiben trotz steitenwechsel

    Hallo Leute,
    Ich bin total am verzweifeln, bin schon in ein paar Foren angemeldet und jetzt habe ich dieses gefunden. Ich versuche eine Webseite zu programmieren, die mir Bewertungssterne anzeigt und den Wert der Sterne die angeklickt wurden will ich dann in eine Datenbank speichern. Soweit so gut, funktioniert schon einigermaßen, jetzt ist nur das Problem, das ich die Variable nur in die Datenbank bekomme wenn ich sie im Link weitergebe. Dann lädt aber meine Seite neu und mein angeklickten sterne sind wieder leer. Ich möchte aber das sie weiterleuchten. Könnt ihr mir helfen? Ich programmiere mit dem Visual Web Developer.
    Mein html-Code sieht so aus:
    HTML-Code:
    <style type="text/css">
    h3, p {
       font-size:24px;
       margin:0;
       padding:0;
    }
    
    p {padding-bottom:.5em;}
    
    a.rating {
       background:url(images/Sternn.gif) repeat-x;
       height:20px;
       width:100px;
       overflow:hidden;
       display:block;
       margin-left:-2px;
       cursor:pointer;
    }
    
    a.rating span {
       background:url(images/Sternf.gif);
       display:block;
       height:100%;
       width:0;
    }
    </style>
    
    <script type="text/javascript">
    
    
        window.onload = function() {
            var myLinks = document.getElementsByTagName('A');
            for (i = 0; i < myLinks.length; i++) {
                if (myLinks[i].className == "rating") {
                    myLinks[i].myActualRating = document.createElement('SPAN');
                    myLinks[i].myHiddenInput = document.createElement('INPUT');
                    myLinks[i].myHiddenInput.type = 'hidden';
                    myLinks[i].myHiddenInput.value = 'none';
                    myLinks[i].myHiddenInput.name = 'rating' + i;
                    myLinks[i].appendChild(myLinks[i].myActualRating);
                    myLinks[i].appendChild(myLinks[i].myHiddenInput);
                    myLinks[i].onmousemove = function(e) {
                        obj = this;
                        this.absXPos = obj.offsetLeft;
                        while (obj.offsetParent) {
                            obj = obj.offsetParent;
                            this.absXPos += obj.offsetLeft;
                        }
                        var e = e || window.event;
                        var relPos = e.clientX || e.pageX;
                        this.myActualRating.style.width = Math.round((relPos - this.absXPos) / 8) * 8 + 'px';
                    }
                    myLinks[i].onmouseover = myLinks[i].onmousemove;
                    myLinks[i].onmouseout = function() {
                        this.myActualRating.style.width = 0;
                    }
                    myLinks[i].onclick = function() {
                        this.onmouseout = function() {
                            this.myActualRating.style.width = this.myHiddenInput.value + '%';
                        };
                        this.myHiddenInput.value = Math.round(this.myActualRating.offsetWidth * 100 / this.offsetWidth);
                        if (this.myHiddenInput.value > 100) this.myHiddenInputValue = 100;
                        var star = (this.myHiddenInput.value == 20) ? ' Stern' : ' Sterne';
                        bewertung = (parseInt(this.myHiddenInput.value / 10) * .5).toString().replace(/\./, ',');  // Variable a
    
    
    
    
    
                        document.getElementById('sendJsVar1').value = bewertung;
                        document.session = bewertung;
                        document.location.href = "Default3.aspx?bewertung=" + document.session;
                        return false;
                    }
                }
            }
        }
      
    </script>
    
    
    
    <form action="#" method="post">
    
       <p><a href="#" class="rating" onclick="te"></a></p>
    </form>
          <div id="aDiv">
          <input id="sendJsVar1" type="hidden" name="bewertung"/>
          </div>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
           ConnectionString="<%$ ConnectionStrings:RechnungsdatenConnectionString %>" 
           InsertCommand="INSERT INTO bew(bewertung) VALUES (@bewertung)"   
         >
          
            
        <InsertParameters>
            <asp:SessionParameter Name="bewertung" SessionField="bewertung" />
        </InsertParameters>
    
      
       </asp:SqlDataSource>
       <br />
       <asp:Button ID="Button" runat="server" Text="Button" OnClick="test" />
    und mein VB-Code dazu so:
    Code:
    Sub te(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
            Dim nummer As Double = Request.QueryString("bewertung")
            Session("bewertung") = nummer
    
        End Sub
      
    
        Sub test(ByVal sender As Object, ByVal e As EventArgs)
            SqlDataSource1.Insert()
        End Sub
    Ich hab mich hierher gewendet weil es denke ich ein Problem auf Java-script ist.
    Wenn ich nämlich diese zeile:
    Code:
    document.location.href = "Default3.aspx?bewertung=" + document.session;
    durch diese ersetzte:
    Code:
    document.location.href = "Default3.aspx#?bewertung=" + document.session;
    Dann leuchten die sterne weiter, aber es wird eine "0" in die Datenbank übergeben.
    Hoffe ich habe mein problem ausfürhlich beschrieben und ihr könnt mir helfen.

  2. #2
    Ava-chan ist offline Tripel-As
    registriert
    24-03-2009
    Beiträge
    192

    AW: Javascript soll bleiben trotz steitenwechsel

    Das Problem ist das du eine neue Seite aufrufst, welche per GET Variablen Daten erhält. Da Javascript nutzerseitig ausgeführt wird wird alles was an javascript läuft beendet und dann nach dem neuaufbau der seite (oder während dessen ) neu ausgeführt.
    Wenn du dein document.location.href auf irgendwas mit Raute setzt dann überträgtst du keine GET Variablen. Daher 0. Warum er dann die Seite nicht neu aufbaut weiß ich allerdings nicht : ) Habe mir deinen Quelltext auch nicht ganz durchgelesen.

    Du könntest es aber durchaus mit Ajax versuchen. Damit würdest du die Seite nicht neu aufbauen und deine Sterne müssten nach dem klick leuchten.

    http://ajax.frozenfox.at/
    - siehe punkt 2.
    Da du hier die Webside nicht neu aufbaust sollte dein Javascript nicht neu ausgeführt werden.

    MfG,
    Ava-chan

  3. #3
    futuregirl ist offline Grünschnabel
    registriert
    29-01-2010
    Beiträge
    3

    AW: Javascript soll bleiben trotz steitenwechsel

    Muss ich das mit einem Php machen? PHP hab ich nämlich noch nicht hinbekommen bei asp.net. Glaube das funktioniert auch nicht.

  4. #4
    XFlorian ist offline Foren As
    registriert
    11-08-2006
    Ort
    Nürnberg
    Beiträge
    95

    AW: Javascript soll bleiben trotz steitenwechsel

    Zitat Zitat von futuregirl Beitrag anzeigen
    Muss ich das mit einem Php machen? PHP hab ich nämlich noch nicht hinbekommen bei asp.net. Glaube das funktioniert auch nicht.
    nein musst du nicht, du kannst auch eine ASP Script abschicken.

  5. #5
    futuregirl ist offline Grünschnabel
    registriert
    29-01-2010
    Beiträge
    3

    AW: Javascript soll bleiben trotz steitenwechsel

    Danke schonmal, aber weiß auch jemand wie das dann funktioniert? könnte mir jemand einen beispiel dafür geben?

  6. #6
    Ava-chan ist offline Tripel-As
    registriert
    24-03-2009
    Beiträge
    192

    AW: Javascript soll bleiben trotz steitenwechsel

    Da ich mit nem Framework arbeite habe ich es noch nie händisch gemacht. Aber eigentlich sieht das Tut doch recht vielversprechend aus. An sonsten gibt es diverse Tutorials einfach Googeln nach GET und AJAX Request oder so. Da sollten sich diverse Codesnipplets finden lassen die genau solche Anfragen machen.

    Ansonsten hätte ich dir als Beispiel Punkt 3. des Tuts empfohlen : ) Das sieht mit Browserweiche eigentlich relativ komplett aus. Einfach nen bissi anpassen und die php - Adresse durch deine asp -Seite mit GET informationen ersetzen und schon sollte die Anfrage ankommen. Da du keine Antwort brauchst lässt du die einfach verfallen und fertig : )

    MfG,
    Ava-chan

  7. #7
    cybaer ist offline Kaiser
    registriert
    12-09-2006
    Beiträge
    1.338

    AW: Javascript soll bleiben trotz steitenwechsel

    Zitat Zitat von futuregirl Beitrag anzeigen
    Problem, das ich die Variable nur in die Datenbank bekomme wenn ich sie im Link weitergebe. Dann lädt aber meine Seite neu und mein angeklickten sterne sind wieder leer.
    Ajax wurde ja bereits genannt.

    Aber das ist beileibe nicht die einzige Möglichkeit, die Daten in die Datenbank zu bekommen.

    Eine weitere Möglichkeit wäre, die Daten nicht in einem neuen Seiten-URL weiterzugeben, sondern z.B. in einem Grafik-URL, oder in einem (unsichtbaren) IFrame, oder ...

    Außerdem kann man die Daten dennoch in einem neuen Seiten-URL weitergeben, ohne JS zu benutzen und ohne Neuladen der Seite. Der dazugehörige Statuscode des Responseheaders ist 206 ("No Content").
    Gruß, Cybaer

Ähnliche Themen

  1. Javascript durch Link auf 2. Seite ausführen??
    Von Bass-T im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 27-06-2008, 12:35
  2. Integer in JavaScript?
    Von Hi iam CDATA im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 28-02-2007, 17:19
  3. Verständnisproblem mit PHP Script und JavaScript
    Von krusty007 im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 24-10-2006, 11:11
  4. Button ohne Funktion - wenn JavaScript deaktiert ist
    Von andie_71 im Forum JavaScript
    Antworten: 9
    Letzter Beitrag: 18-04-2005, 10:13
  5. javascript im javascript
    Von goonsite im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 08-04-2005, 21:25

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •