Id ermitteln

Ciatronical

New member
Hey All,

ich möchte einen Ajax-Request abhängig von der Id ausführen.
Code:
$("#user,#kategorie").selectBoxIt({
            theme:       "jqueryui",
            autoWidth:   true,
            height: "12",
            populate: function() {
                var deferred = $.Deferred()
                $.ajax({
                    url: 'jqhelp/calendar.php',
                    data: { task:  $(this).attr('id') == 'user' ? 'getUsers': 'getKategorie'},
                }).done(function(json) {
                    var obj = $.parseJSON( json.trim() );
                    deferred.resolve(obj);
                });
                return deferred;
            }
        })
Speziell geht es um folgende nicht funktionierende Zeile:

Code:
 data: { task:  $(this).attr('id') == 'user' ? 'getUsers': 'getKategorie'},


Wie kann ich die von seletBoxIt verwendete Id ermitteln??

VG Ronny
 
Bei jQuery kommen ja leider seltenst Fehlermeldungen in die Konsole. Wird der Request garnicht ausgeführt oder mit dem falschen Wert? Die Condition mal in Klammern setzen bringt nichts? Mal ein Debug mittels alert() oder console.log() eingebaut?
 
alert() git ein Objekt zurück, console.log() liefert:
Code:
<input id="id" class="ui-widget-content ui-corner-all test" type="text" style="visibility: hidden" name="id">
 
Code:
console.log($(this).attr('id'));

Code:
autoWidth:   true,
            height: "12",
            populate: function() {
                var deferred = $.Deferred()
                alert(  $(this).attr('id') );
                console.log($(this).attr('id'));
                $.ajax({
                    url: 'jqhelp/calendar.php',
                    data: { task:  $(this).attr('id') == '#user' ? 'getUsers': 'getKategorie'},

Ich wusste nicht wie ich es in die $.ajax bekomme
 
Mit console.log($(this).attr('id')); bekommst du <input id="id" class="ui-widget-content ui-corner-all test" type="text" style="visibility: hidden" name="id"> in der Konsole angezeigt? Im Ernst? Steht da das ganze HTML Tag in der Konsole?
 
Im $(this).attr('id') == '#user' ? 'getUsers': 'getKategorie' sehe ich auch noch ein Fehler. Es muss auf jeden Fall 'user' ohne Lattenzaun heißen. Und dann mach die Zuweisung mal vor dem Ajax und lass das Ergebnis in der Konsole ausgeben.
 
tip: this.id ist deutlich einfacher als $(this).attr('id') (und funktioniert auch, wenn zwischendurch die ID geändert wurde).
 
Also in ID steht stehts
Code:
[input#id.ui-widget-content.ui-corner-all.test, context: input#id.ui-widget-content.ui-corner-all.test, jquery: "1.9.1", constructor: function, init: function, selector: ""…]

Hier noch einmal der ganze Code:
Code:
 $("#user, #kategorieBox").selectBoxIt({
            theme:       "jqueryui",
            autoWidth:   true,
            height: "12",
            //test : $(this).attr('id'), /*** EINS ***/
            populate: function() {
                var deferred = $.Deferred()
                //alert(  test );  /*** ZWEI ***/
                console.log($(this.id));
                $.ajax({
                    url: 'jqhelp/calendar.php', /*** DREI ***/
                    //data: { task:  $(this).attr('id') == 'user' ? 'getUsers': 'getKategorie'},
                    data: { task: 'getUsers' }
                }).done(function(json) {
                    var obj = $.parseJSON( json.trim() );
                    deferred.resolve(obj);
                });
                return deferred;
            }
        })

Noch einige Verstädnisfragen:

Wie übergibt man in JS die Daten von *EINS zu *ZWEI oder *DREI
Wie kann man an z.B. Stelle *DREI Daten ausgeben? console.log()
 
Also in ID steht stehts
Code:
[input#id.ui-widget-content.ui-corner-all.test, context: input#id.ui-widget-content.ui-corner-all.test, jquery: "1.9.1", constructor: function, init: function, selector: ""…]
mit console.log($(this.id)); fragst du das Element ab, nicht die ID … und so wie’s aussieht, lautet deine ID id. Was ich jetzt auch nicht gefunden habe, ist der Kontext von this im selectBoxIt()-Aufruf.
 
Zuletzt bearbeitet:
da gibt es prinzipiell 2 Probleme:
- bei EINS: test ist keine Variable, sondern eine Object-Property (nämlich die von dem config-Objekt)
- bei ZWEI: (zumindest im Fiddle), this zeigt auf window.
 
Gibt es denn wirklich keine Lösung die Id zu ermitteln??
Ich habe sonst zwei fast identische Funktionen.

Der einzige Unterschied ist der Selektor und url: xxx
 
Gern geschehen. Schau öfter mal rein! ;)
Hinter den ganzen }) würde ich die Semikolon übrigens nicht extra weglassen. Genau genommen gehören sie dahin.
 
Zurück
Oben