ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
851
851
EMPFEHLEN
-
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
-
01.02.12 09:17 #2
- 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.
-
Ich verwende normale ASP.NET Webforms mit MasterPages.
Gibt es eine andere Möglichkeit auch?Um die Daten wieder an den Server zu übermitteln bietet sich ajax als eine Möglichkeit an.
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
-
01.02.12 14:17 #4
- 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:
Liebe Grüße,PHP-Code:$(document).ready(function(){
$('.datenSchreiben').on('click',function(){
ajaxRequest('read.asp','#ausgabe');
});
});
function ajaxRequest(urlAdresse, ziel) {
$.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);
}
});
}
abs.
-
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.
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 EingabeflederCode :1 2 3
$('div#divNew1').dialog('open').dialog({ title: "test" });
auslesen können.
Im alert habe ich den Wert im CodeBehind nicht.Code :1 2 3
$('#<%= lnkSave1.ClientID %>').click(function () { alert($('#<%= txt1.ClientID %>').val()); });
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
-
01.02.12 15:55 #6
- 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.
-
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
habe ich ja die Werte aber danach wird ein PostBck durchgeführt und die Werte sind dann empty.Code :1 2 3
$('#<%= lnkSave1.ClientID %>').click(function () { alert($('#<%= txt1.ClientID %>').val()); });
Sorry da ich so nach hacke aber ich will es verstehen.
Lg
W.
p.s: Danke für den netten Link
-
01.02.12 17:03 #8
- 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
Ansonsten poste Doch mal deine Funktion hier rein, und ein bisschen Html dazu Deiner Seite.PHP-Code:// meineVar hat jetzt deinen Inhalt
var meineVar = $('#<%= txt1.ClientID %>').val(); // oder .html();
// Arbeite mit "meineVar" weiter
$('#<%= lnkSave1.ClientID %>').click(function () {
alert(meineVar);
});
-
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
-
01.02.12 23:09 #10
- 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:
Klappt es so?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);
}
});
-
Hallo abs. und danke vorerst für deine Antwort.
Jedoch klappt es nicht.
Wenn ich das
in das Klick-event von "lnkSave1" reinpacke funktioniert nicht mal das Dialog.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); } });
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.
Im CodeBehind kann ich auf "key1" auch nicht zugreifen. Also empty.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); } }); }
Muss "$.ajax(..." irgenwie vorher dafiniert werden oder ****?
Danke und Lg
W.
-
02.02.12 10:48 #12
- 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
-
Ich verwende Firefox und IE. Im Firefox in der Fehlerconsole hatte ich zuerst die Meldung
nachdem ich die Klammer weggetan habe wird auch die function aufgerufen.Code :1 2 3
Fehler: postDaten.serialize is not a function Quelldatei: http://localhost:64482/Seite1.aspx Zeile: 227
Allerdings hat die Variable "postDaten" nach dem Befehl "serialize" den Wert "undefined".
Weiters habe ich auch die Fehlermeldung in der Fehlerconsole:
Keine Ahnung wie das zu stande kommt den so eine xml Datei habe ich nicht außer dieser wird zur Laufzeit erstellt.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]
Das kann's ja nicht sein das es so schwer ist Daten vom jquery-Dialog im CodeBehind abzufragen.
Danke und Lg
W
-
02.02.12 11:21 #14
- 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
-
jQuery Dialog und Ajax Submit
Von Superfreak007 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 13.09.11, 16:18 -
IE: jQuery UI Dialog
Von iLu_is_a_loser im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 09.08.11, 14:53 -
jquery dialog als bestätigung für Eingabe
Von supercat1510 im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 02.01.11, 20:15 -
jquery.Dialog?
Von TomTaylor im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 22.11.10, 11:07 -
jQuery modal Dialog
Von tequila slammer im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 10.05.10, 13:47





Zitieren
Login





