jQuery funktioniert nicht mit asp.net Masterpage

tequila slammer

Erfahrenes Mitglied
Hallo Forum,

nach langer Suche komme ich bei folgender Problematik einfach nicht weiter. Ich versuche mit jQuery eine CodeBehind Methode aufzurufen. Das Script in der Masterpage dazu sieht wie folgt aus.
Code:
$("#timeClick").click(function() {
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/GetTime",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        $("#Result").text(msg);
                        alert("Vielen Dank für Ihren Besuch!");
                    },

                    error: function() {
                        alert("Fehler");
                    }
                });
                return false;
            });

Im Webinhaltsformular befindet sich folgendes HTML Konstruk im ContentPlaceHolder.
HTML:
<div id="Result"></div><div><a href="#" id="timeClick">klick</a></div>

Das Webinhaltsformular hat zusätzlich im CodeBehind die Methode GetTime, die wie folgt deklariert ist:
Code:
public static string GetTime()
        {
            return DateTime.Now.ToString();
        }

Beim Klick auf den Link wird immer das jQuery Error Event gefeuert. Testet man das ganze aber in einer normalen WebForm ohne Masterpage funktioniert der Zugriff problemlos.

Kann mir jemand von euch weiterhelfen, wie ich das ganze auch mit Masterpages zum laufen bekomme? Laut Google und Bing gibt es eigentlich keinen Unterschied zwischen Seiten mit und ohne Masterpages, wenn mann keine asp.net Controls verwendet. Ansonsten muss man nur auf die Control-Id achten, aber das ist hier ja nicht der Fall.
 

Sven Mintel

Mitglied
Moin,

ich hab von NET zwar keine Ahnung, aber wieauchimmer:
jQuery erwartet von deiner Anfrage an Default.aspx/GetTime eine Ausgabe in Form eines JSON-kodierten Objektes.

Ich vermute mal, auch in NET liefert return einen Rückgabewert und keine Ausgabe, und soweit ich nach kurzem Googlen sagen kann, liefert ToString() auch kein JSON

Selbst, wenn es dann funktionieren würde, würde dir der request keinen String liefern, den du per text() einfügen kannst, sondern ein [object]
 

tequila slammer

Erfahrenes Mitglied
Hallo Sven,

ich habe mir probeweise mal ein neues Projekt im VisualStudio direkt in .net 3.5 erstellt. Damit geht es, wenn die Methode noch das Attribut WebMethod erhält. Somit ist meine Frage eigentlich schon beantwortet. In dem Ausgangsprojekt funktioniert diese Herangehensweise jedoch nicht. Ich denke es liegt daran, dass es ein aus .net 2.0 nach 3.5 konvertiertes Projekt war.
 

Neue Beiträge