php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.03.2011, 15:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Beschreib doch mal, was Du erreichen willst. Aber bitte nicht so:
Zitat:
Es geht darum, dass document.new_breakrule.testentry_1.value vorher ausgewertet wird und der "Betrag" in das onSave Event geschrieben wird.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.03.2011, 22:32  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Ich habe lange gebraucht um es nun zum funktionieren zu bringen, aber nun habe ich es endlich geschafft dank eurer Hilfe

serialize() ist die Lösung.

Ich habe in meiner Funktion anstelle des Objekts mit Werten der Felder nun folgendes geschrieben:

PHP-Code:
$.postpostURL, $(postDataForm).serialize(), 
wobei

PHP-Code:
$(postDataForm).serialize() 
die ID der Form ist, dessen Inhalt ich später per $.post absetze.


Tausend Dank dass Ihr mich auf den richtigen Pfad gebracht habt

____

@nikosch
Es ging darum die Werte aus einer Form per $.post abzusetzen.
$.post war in einer extra Funktion welche ich aufgerufne habe.
Als die "Hauptfunktion" jedoch aufgerufen wurde mit den Parameter, hat er mir alle Formfelder schon ausgewertet bevor ich $.post abgesandt habe (Weil die Funktion beim laden der Seite initialisiert werden muss).

Dank serialize() grabt er mir nun die values der Form ohne diese VOR dem "Save" Event (Worin mein $.post Request steht) zu setzen.

Geändert von dreamcatcher (27.03.2011 um 22:40 Uhr).
dreamcatcher ist offline   Mit Zitat antworten
Alt 27.03.2011, 22:42  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Als die "Hauptfunktion" jedoch aufgerufen wurde mit den Parameter, hat er mir alle Formfelder schon ausgewertet bevor ich $.post abgesandt habe (Weil die Funktion beim laden der Seite initialisiert werden muss).

Dank serialize() grabt er mir nun die values der Form ohne diese VOR dem "Save" Event (Worin mein $.post Request steht) zu setzen.
Ich verstehe nur die Hälfte, aber das ist doch Unsinn. Wenn ein Event oder eine Scriptausführung zu früh gestartet wird, dann musst Du das eben verhindern, nicht einfach andere Datenformate benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.03.2011, 00:30  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

PHP-Code:
function abc (Params) {
[..]
Event1(){
GrabAllFormInputElements(Params);
}
[..]
}; 
Solch eine Funktion wollte ich wie folgt benutzen:


PHP-Code:
abc ( {abcdocument.formname.element1.value } ); 
Ich muss function abc() beim Seitenaufruf bekannt machen, damit der Dialog geöffnet werden kann.
Problem dabei war, dass er der übergebene Wert schon ausgelesen wird bevor überhaupt Event1 auftritt, da der entsprechende Parameter Params mitgegeben werden musste als die abc() initialisiert wird.

Und das Event1 herausnehmen und nach abc() zu initialisieren wäre Unsinn (Wobei ich nicht einmal wüsste wie dies geht).

Nun gebe ich jedoch nur noch den Seperator, sprich $(#Seperator).serialize() und somit werden im Event1 erst wenn genau dieses Event auftritt die Elemente der Form mit der ID=Seperator ausgewertet.

Hoffentlich konnte ich es jetzt gut rüberbringen

Das einzig unbequeme ist, dass ich meinen "case_Code" nicht einzeln als "eigenschaft:wert" mitgeben kann, da serialize() nur die Felder aus der <form> </form> holt.
Nun habe ich mir einfach ein verstecktes Hilfsfeld gesetzt mit dem namen "case_code" und einem vordefinierten Wert.

Geändert von dreamcatcher (28.03.2011 um 01:11 Uhr).
dreamcatcher ist offline   Mit Zitat antworten
Alt 28.03.2011, 03:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ein Event macht nur dann Sinn, wenn es zur Laufzeit seine dynamischen Daten ermittelt. Etwas so zu parameteriesieren ist Quatsch. Entweder man übergibt ein Callback*) als Parameter oder eben (unschönere Variante) alle Formelement-Objekte.

Eine häßliche Variante wäre, das Objekt erst onClick zu erstellen. Das Form ändern darf man danach natürlich nicht.



*) ungetestet:
PHP-Code:


var dialogBox_Dialog = function (selectordialogCallback) {

    $(
selector).dialog ({
        
autoOpen false,
        
buttons  : { 
            
"Save" : function() {

              
//Custom closure for $.post function()
              
var thisDialog this;

              var 
settings dialogCallback ();

              $.
post (settings.postURL  ,
                      
settings.postData ,
                      function (
data) {
                        if (
data == 'Successfully updated') { // fragwürdig: data == 'Successfully updated'
                            
alert('postData: ' settings.postData '  ||  response: 'data);
                            $(
thisDialog).dialog ('close');
                        } else {
                            
alert('postData: 'settings.postData '  ||  response: 'data);
                            $(
thisDialog).dialog ('close');
                        }
                      }
                     );
            }
        }
    });
};


var 
getFormData = function () {
  var 
settings = { 
                 
"postURL"  "./processor1.php" ,
                 
"postData" : {}
                 };

  
settings.postData["case_name"]   = 'case_1';
  
settings.postData["testentry_1"] = document.new_breakrule.testentry_1.value;
  
  $(
'#MyForm input[type=text]').each () {
    
settings.postData[this.attr ('name')] = this.val ();
  }
  
return 
settings;
};


dialogBox_Dialog ("#dialog" getFormData);

$(
'#dialog_link').click (function(){
    $(
'#dialog').dialog ('open');
    return 
false;
}); 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 31.03.2011, 18:26  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Danke nikosch, vor allem dass du die Zeit genommen hast und ein Beispiel mitgegeben hast anstatt zu sagen "Man kann es per Callback machen".

Habe mir extra Zeit gelassen bis ich antworte, da mir auf den ersten Blick kein Vorteil auffiel, sondern nur der Nachteil dass ich nicht mehr alles als "Einzeiler" schreiben kann.

Die Callback-Methode

Neu war mir, dass man per Objekt.Data auf die entsprechenden Parameter sowie deren Werte zugreifen kann und auch neue Parameter hinzufügen kann.
Solch ein Objekt neu zu erstellen zur Laufzeit ist wahrscheinlich die "best practise" Variante (?).

Für meinen expliziten Fall bin ich bei serialize() geblieben, aufgrund der Tatsache dass immer alle Formelemente gefetcht werden.

Die Callback-Methode hat mir jedoch schon wunderbare Dienste bei einer anderen Programmier-Herausforderung geholfen !

dreamcatcher ist offline   Mit Zitat antworten
Alt 31.03.2011, 21:16  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Hast du denn so viele verschiedene Dialoge? Grundsätzlich gilt: so wenig DOM-Zugriffe wie nötig.

Kurz angescribbelt:

PHP-Code:
var customHandler = function () {
    var 
$this = $( this ), // cache das jQuery object - context ist immer noch button save / dialog
        
url "example.php";
    $.
posturl, $( 'form' ).serialize(), function ( response ) {
        if( 
response.success) {
            
$this.dialog'close' );
        }
    }, 
'json'
};

$( 
'.dialog' ).dialog({
    
buttons : {
        
save customHandler.callthis )
    }
}); 
Ansonsten kannst du alle Options von jedem jQueryUI-Dialog auch unmittelbar vor dem Öffnen abändern (siehe option ).

Nicht böse gemeint, aber das wirkt noch alles so, als solltest du dich (nochmal?) mit den Grundlagen auseinander setzen - die jQuery Tutorials, die ich dir gepostet hab, bringen dich wirklich weiter.

grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 31.03.2011, 21:48  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Zitat:
Zitat von rudygotya Beitrag anzeigen
Hast du denn so viele verschiedene Dialoge? Grundsätzlich gilt: so wenig DOM-Zugriffe wie nötig.

[...]


Nicht böse gemeint, aber das wirkt noch alles so, als solltest du dich (nochmal?) mit den Grundlagen auseinander setzen - die jQuery Tutorials, die ich dir gepostet hab, bringen dich wirklich weiter.
Es hat nichts mit "zu viele Dialoge" zu tun.

Ich habe vor die einzelnen Funktionen in eine main.js abzukapseln und dann am Ende nur noch als Einzeiler (Soweit möglich) im Template einzutragen.

Wenn ich aber eine größere CallBack-Funktion wieder drinnen habe, geht mir in meinen Augen gewisserweise der Nutzen einer eigenen Funktion verloren.

Deine Kritik ist durchaus berechtigt, da ich es bisher nur überflogen habe.
Es steht aber bei mir auf Punkt 2 meiner "ToDo´s der Horizonterweiterungen".
Momentan widme ich mich noch einem PHP Buch, bei welchem ich derweil auf Seite 172 von ~1300 bin.

Was ich jedoch nicht verstehe ist, worin der Vorteil von deiner Variante liegt im Gegensetz zu meinem Ergebnis (Link ([Erledigt] jQuery UI $.post(URL, Data) || Data als Variable übergeben nicht möglich ?)) ?
Die Zugriffe auf das DOM unterscheiden sich nicht, da du ebenfalls serialize() verwendest !?
dreamcatcher ist offline   Mit Zitat antworten
Alt 01.04.2011, 00:29  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Zitat:
Solch ein Objekt neu zu erstellen zur Laufzeit ist wahrscheinlich die "best practise" Variante (?).
Das hatte ich auf verschiedene Dialog-Instanzen bezogen - ich verstehe dich in vielen Punkten einfach nicht, was du willst.

Du wolltest doch irgendwo einen Handler für den "save"-Event angeben, das da oben ist doch ein Beispiel, wie du den Handler irgendwohin setzen kannst. Alternativ kannst du auch einen eigenen Event feuern, so ists erstmal das einfachere Konstrukt. Du wertest zum einen keine Response aus (dein Responsetyp ist HTML?), zum anderen erzeugst du das jQuery Object des Dialogs jedesmal neu. Einmal erzeugen und cachen > höhere Performance

Zitat:
Ich habe vor die einzelnen Funktionen in eine main.js abzukapseln und dann am Ende nur noch als Einzeiler (Soweit möglich) im Template einzutragen.
Guter Plan, da brauchste dann aber auch eine ordentliche Objektstruktur. 1 - 4 minimized Dateien sind zwar das Optimum, aber Javascript würde ich nicht unterschätzen.
Ein gutes Buch dazu (und auch noch frei) ist eloquent javascript Ein interessantes Pattern ist mMn auch die widget bridge, die erich hynds hier beschreibt.

grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 01.04.2011, 22:42  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Ich hab es mir gestern heruntergeladen und kam nun dazu es schnell zu überfliegen... sehr gut geschrieben und vor allem mit viel Background (So soll es sein).

Es ist jedoch teilweise nicht ganz leicht... aber bei mir nun auf Punkt 3 meiner ToDo´s, danke !
dreamcatcher ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable übergeben mkn PHP Tipps 2010 12 24.09.2010 19:06
Pfad als Variable übergeben Slikey PHP-Fortgeschrittene 5 28.07.2010 13:19
[Erledigt] Wert einer Variable an einen Link übergeben horni23 PHP Tipps 2010 11 10.04.2010 00:32
Variable an ein Input Feld übergeben. Rubio JavaScript, Ajax und mehr 5 18.03.2010 08:25
Variable einer Seite übergeben Sharker PHP Tipps 2009 6 30.09.2009 11:47
Variable übergeben mit Register Globals off trunky PHP Tipps 2008 32 08.07.2008 20:30
[Erledigt] Variable wird nicht übergeben Thorsten PHP Tipps 2008 8 24.05.2008 11:57
variable übergeben philips PHP Tipps 2006 6 08.01.2006 18:36
Variable per URL übergeben krummzahn PHP Tipps 2005-2 8 07.10.2005 13:15
Session Variable über Hyperlink übergeben DannyD PHP Tipps 2004-2 2 07.11.2004 14:22
Variable nach $myrow[''] übergeben PHP Tipps 2004 2 20.10.2004 17:56
variable an andere php datei übergeben PHP Tipps 2004 18 19.09.2004 10:09
Variable übergeben me PHP Tipps 2004 14 31.08.2004 18:17
[Erledigt] Variable in URL übergeben, ohne dass man sie sieht? PHP Tipps 2004 4 17.07.2004 10:21
variable per link übergeben PHP Tipps 2004 22 25.06.2004 12:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php jquery ajax varaible dialog fom speichern, jquery ui dialog inhalt dynamisch laden, jquery ui dialog form values, jquery ui dialog text übergeben, jquery input felder json per post, jquery session variable setzen, jquery ui dialog data retrieve, jquery wert an ui dialog.(open) geben, jquery parameter aus url auslesen dialog, formular jquery passwort speichern dialog, jquery array in url übergeben#, jquery variable url anhängen, jquery ui dialog form, php parameter mit jquery, jquery variable serialize, jquery ui dialog formular example, jquery ajax mitgeben, php jquery ui form dialog, serialize statt value text jquery zurückgeben, jquery formular dynamisch erzeugen serialize

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum