tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
851
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Hallo allerseits!

    Ich habe da ein problem für welches ich noch keine Lösung fand.
    Ich zeige einige TextBoxen in jQuery Dialog an dessen Werte ich im CodeBehind auslesen möchte.

    Ich habe es bereits mit HiddenFields, Request.Form["txtTest1"] und txtTest1.Text probiert die Werte auszulesen, ohne Erfolg.
    Ich möchte die Daten einfach im CodeBehind in die DB abspeichern.
    Muss ich da Ajax verwenden?
    Wenn ja, wie. Gibt es ein Beispiel hier oder im Netz?
    Kann ich auf die Daten irgenwie anders zugreifen?
    Warum kann man auf die Daten nicht zugreifen?

    Wäre dankbar wenn mir jemand da weiter helfen könnte.


    Lg
    W
     

  2. #2
    tequila slammer tequila slammer ist offline Mitglied Gold
    Registriert seit
    Aug 2006
    Beiträge
    204
    Welches ASP verwendest du? classic ASP, ASP.net WebForms oder ASP.net MVC (1 oder 2 oder 3)?
    Um die Daten wieder an den Server zu übermitteln bietet sich ajax als eine Möglichkeit an.
     

  3. #3
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Ich verwende normale ASP.NET Webforms mit MasterPages.

    Um die Daten wieder an den Server zu übermitteln bietet sich ajax als eine Möglichkeit an.
    Gibt es eine andere Möglichkeit auch?
    Ich habe mit AJAX bisher nocht nicht wirklich viel zu tun gehabt außer
    Kombination Scriptmanger mit UpdatePanel, ControlItems und Triger.

    Gibt es vielleicht ein Tutorial dies bzgl. oder ein Sample?


    Danke im vorraus und
    Lg W
     

  4. #4
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Hi,
    natürlich gibt es jQuery Ajax Tutorials, unendlich viele. Hier unter anderem die Dokumentation.

    Ich kenne mit mit ASP und CodeBehind nicht aus, aber wenn die Daten auf der Seite bereits vorhanden sind, brauchst Du kein AJAX Aufruf, wird erst ein Request benötigt, dann kannst Du es per AJAX lösen.

    Ein einfacher AJAX Aufruf in jQUery:
    PHP-Code:
    $(document).ready(function(){
        $(
    '.datenSchreiben').on('click',function(){
            
    ajaxRequest('read.asp','#ausgabe');
        });
    });


    function 
    ajaxRequest(urlAdresseziel) {
        $.
    ajax({
            
    url urlAdresse,
            
    success : function(data) {
                
    // Die Daten aus "urlAdresse" werden in der Variabel "data" abgelegt
                // Jetzt kannst Du Sie in deiner "ziel" Div Box anzeigen lassen
                
    $(ziel).html(data);
            }
        });

    Liebe Grüße,
    abs.
     

  5. #5
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Hallo abstractizm!

    Danke für dein Sample jedoch verstehe ich das nicht so ganz.
    Ich habe ein DIV, dieser beinhaltet die oben erwähnten Controls.
    Das DIV-Elementzeige ich als jQuery Dialog an.

    Code :
    1
    2
    3
    
    $('div#divNew1').dialog('open').dialog({
        title: "test"
    });
    Im DIV-Tag habe zusätzlich ein Speichern LinkButton mit dem ich dann die eigentlichen Werte speichern möchte. Wenn ich jetzt auf speichern klicke möchte ich die Werte von den Eingabefleder
    auslesen können.
    Code :
    1
    2
    3
    
    $('#<%= lnkSave1.ClientID %>').click(function () {
        alert($('#<%= txt1.ClientID %>').val());
    });
    Im alert habe ich den Wert im CodeBehind nicht.

    Allerdings habe ich kein "Ziel" - DIV wo ich das anzeige sondern ich will das angezeigte DIV auslesen und die Werte in einer C# Methode speichern.


    Vielleicht habe ich auch einen Denkfehler da ich mit AJAX nicht so vertraut bin.
    Wäre für weitere Hilfe sehr dankbar.


    Danke und Lg
    W
     

  6. #6
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Zum Abfragen von Daten, die auf der Seite schon enthalten sind, benötigst Du kein AJAX.
    Was Du brauchst ist ein einfaches Auslesen. Das folgende Beispiel funktioniert mit jQuery 1.7+

    http://jsfiddle.net/3Zprg/

    Ich gehe davon aus, das Du woanders ein Problem hast, kannst du vielleicht einen Link posten?

    Liebe Grüße,
    abs.
     

  7. #7
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Link kann ich daweil leider noch nicht posten.

    Aber ich glaube da die Daten im jQuery im Client-Context angezeigt werden, werden diese bei einem PostBack wieder zurückgesetzt.
    Daher glaube ich das im Click-Event im jQuery die Werte übergeben muss.
    Denn hier
    Code :
    1
    2
    3
    
    $('#<%= lnkSave1.ClientID %>').click(function () {
        alert($('#<%= txt1.ClientID %>').val());
    });
    habe ich ja die Werte aber danach wird ein PostBck durchgeführt und die Werte sind dann empty.

    Sorry da ich so nach hacke aber ich will es verstehen.

    Lg
    W.


    p.s: Danke für den netten Link
     

  8. #8
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Also,
    ein Blick in die Doku sagt: "Vorhandene Daten werden zu einem Dialogfenster dargestellt." Es wird nichts überschrieben oder sonstiges.

    jQuery überschreibt nichts, wenn Du es nicht explizit anordnest.

    Das bedeutet die Daten sind vorhanden und Dein Fehler liegt wahrscheinlich woanders.

    1. Überprüfe mal Dein .val(). Weil .val() dazu gedacht ist Input / Textareas auszulesen. Für Inhalte in Divs nimmt man für gewöhnlich .html().
    2. Schreib den ausgelesenen Wert vorher in einer Variable

    PHP-Code:
    // meineVar hat jetzt deinen Inhalt
    var meineVar = $('#<%= txt1.ClientID %>').val(); // oder .html();

    // Arbeite mit "meineVar" weiter
    $('#<%= lnkSave1.ClientID %>').click(function () {
        
    alert(meineVar);
    }); 
    Ansonsten poste Doch mal deine Funktion hier rein, und ein bisschen Html dazu Deiner Seite.
     

  9. #9
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Hallo abs.!

    Dieser variante bring keinen Wert. Die msgBox ist leer.
    Ich habe hier mal einpaar ausschnitte:

    Also, mit diesem LinkButton rufe ich das jQuery-Dialog auf.
    Code :
    1
    
    <asp:LinkButton ID="lnkNewP1" CausesValidation="false" runat="server" CommandName="NewP1" OnClientClick="return false;" />

    Der JS-Script Code dazu
    Code :
    1
    2
    3
    
    $("#divNewPE").dialog('open').dialog({
            // ...
    });

    Soweit so gut. Das Dialog beinhaltet die Controls im Body definiert sind.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    <div id="divNewP1" class="Dialog">
      <table>
          <tr>
              <td>
                  <asp:Label ID="lblPR1" runat="server" AssociatedControlID="txtP1"></asp:Label>
              </td>
              <td>
                  <asp:TextBox ID="txtP1" runat="server"></asp:TextBox>
              </td>
              <td>
              </td>
          </tr>
          
    ... ... ...
     
          <tr>
              <td>
                  <asp:Label ID="lblB1" runat="server" AssociatedControlID="txtB1" ></asp:Label>
              </td>
              <td>
                  <asp:LinkButton ID="lnkSave1" Text="Erstellen" ValidationGroup="vgP1" runat="server" CommandName="Erstellen" OnClick="lnkSave1_Click" />
              </td>
              <td>
              </td>
          </tr>
    ... ... ...

    Wenn ich jetzt in das Textfeld im Dialog etwas eingebe und danach auf Speichern klicke, dann kann ich auf den Wert mittels JS zugreifen
    Code :
    1
    2
    3
    
    $('#<%= lnkSave1.ClientID %>').click(function () {
        alert($('#<%= txtB1.ClientID %>').val());   // Wert ist "blabla"
    });

    jedoch im CodeBehind also in C# nicht.
    Code :
    1
    2
    3
    4
    
    protected void lnkSave1_Click(object sender, EventArgs e)
    {
        string x1 = txtP1.Text;                 // Wert ist ""
        object x2 = Request.Form["txtP1"];  // Wert ist ""

    Hier benötige ich dann die Werte damit das in die DB kommt.


    Ich hoffe das ich das Prolem deutlicher damit schildern konnte.
    Danke im vorraus und Lg
    W
     

  10. #10
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Hi,
    ich glaube jetzt habe ich den Ablauf verstanden.

    Also Du hast die Daten auf der Seite.
    Diese werden korrekt angezeigt.
    Danach gehst Du ins Backend und dort sind sie nicht mehr.
    Wenn ich das richtig dargestellt habe, dann brauchst Du doch einen AJAX Request.

    Nur nochmals zum Verständnis wie man AJAX einsetzten sollte:
    AJAX bedeutet das Du einen GET oder POST Request ausführen kannst und das Ergebnis / die Verarbeiten zurückgibt, ohne das Du die Seite verlässt.
    Also sollte die Datei, die Du per AJAX aufrufst, nur die Verarbeitung beinhalten, die Ausgabe des Ergebnisses kannst Du weiterhin in Deiner gestalteten Seite beibehalten.

    So würde dann ein AJAX Post Befehl aussehen können:

    PHP-Code:
    // Erst mal Deinen Wert abrufen
    var postDaten = $('#<%= txtB1.ClientID %>').val();

    // Daten URLEncodieren, damit kein Unfug gemacht werden kann
    postDaten postDaten.serialize();

    // HierDeine Verarbeitungsdatei definieren
    // Ich gehe davon aus Du hast eine ASP Datei
    var postUrl "speichern.asp";

    // Jetzt AJAX mit deinen Daten und der URL ausführen
    // Die Daten oben werden im AJAX Befehl so weitergegeben:
    // data: '{ key1: postDaten  }
    // und key1 heisst dann die POST Variable, die Deine Verarbeitungsdatei mit dem Wert
    // empfangen kann

    $.ajax({ 
            
    url postUrl 
            
    type'POST',
            
    data'{ key1: postDaten  },
            success : function(antwort) { 
                alert('
    Die Daten wurden gespeichert, die Antwort von Deiner Datei' + antwort);
            } 
    }); 
    Klappt es so?
     

  11. #11
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Hallo abs. und danke vorerst für deine Antwort.
    Jedoch klappt es nicht.
    Wenn ich das
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    $.ajax({ 
            url : postUrl , 
            type: 'POST',
            data: '{ key1: postDaten  }',
            success : function(antwort) { 
                alert('Die Daten wurden gespeichert, die Antwort von Deiner Datei' + antwort);
            } 
    });
    in das Klick-event von "lnkSave1" reinpacke funktioniert nicht mal das Dialog.
    Die elemente von dem DIV werden auf der Seite angezeigt und nicht erst im Dialog.
    Wenn ich das außerhalb des Click-Event platziere funktioniert zwar das dialog aber ich kann auf die Werte nicht zugreifen.
    Ich habe in die function ein alert eingebaut um zu wissen ob er da rein geht aber das tut es auch nicht.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    function ajaxRequest(postUrl, postDaten) {
                    alert(postUrl + "\n" + postDaten);
                    $.ajax({
                        url: postUrl,
                        type: 'POST',
                        data: '{ key1: postDaten  }',
                        success: function (antwort) {
                            alert('Die Daten wurden gespeichert, die Antwort von Deiner Datei' + antwort);
                        } 
                    });
                }
    Im CodeBehind kann ich auf "key1" auch nicht zugreifen. Also empty.

    Muss "$.ajax(..." irgenwie vorher dafiniert werden oder ****?

    Danke und Lg
    W.
     

  12. #12
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Hallo WaZZkeSS,
    welchen Browser benutzt Du? Und was sagt die Fehlerconsole in Deinem Browser, wo der Fehler liegt.

    Liebe Grüße,
    abs
     

  13. #13
    Avatar von WaZZkeSS
    WaZZkeSS WaZZkeSS ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    148
    Ich verwende Firefox und IE. Im Firefox in der Fehlerconsole hatte ich zuerst die Meldung
    Code :
    1
    2
    3
    
    Fehler: postDaten.serialize is not a function
    Quelldatei: http://localhost:64482/Seite1.aspx
    Zeile: 227
    nachdem ich die Klammer weggetan habe wird auch die function aufgerufen.
    Allerdings hat die Variable "postDaten" nach dem Befehl "serialize" den Wert "undefined".

    Weiters habe ich auch die Fehlermeldung in der Fehlerconsole:
    Code :
    1
    
    Fehler: uncaught exception: [Exception... "Cannot modify properties of a WrappedNative"  nsresult: "0x80570034 (NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN)"  location: "JS frame :: chrome://global/content/bindings/autocomplete.xml :: onxblpopuphiding :: line 862"  data: no]
    Keine Ahnung wie das zu stande kommt den so eine xml Datei habe ich nicht außer dieser wird zur Laufzeit erstellt.
    Das kann's ja nicht sein das es so schwer ist Daten vom jquery-Dialog im CodeBehind abzufragen.


    Danke und Lg
    W
     

  14. #14
    abstractizm abstractizm ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Köln
    Beiträge
    18
    Nein, schwer ist es sicherlich nicht, aber da ich keinen Zugang zu Deiner Datei habe, ist das für mich Trial n Error. Ich glaube ohne das ich mehr von Deiner Datei bzw Du einen Link postet drehen wir uns da im Kreis.

    Liebe Grüße,
    abs.
     

Ähnliche Themen

  1. jQuery Dialog und Ajax Submit
    Von Superfreak007 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 13.09.11, 16:18
  2. IE: jQuery UI Dialog
    Von iLu_is_a_loser im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 09.08.11, 14:53
  3. jquery dialog als bestätigung für Eingabe
    Von supercat1510 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 02.01.11, 20:15
  4. jquery.Dialog?
    Von TomTaylor im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 22.11.10, 11:07
  5. jQuery modal Dialog
    Von tequila slammer im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 10.05.10, 13:47