Ich habe eine Listbox, die ich mit jquery/ajax aktualisieren möchte, um eine Webmethode von einem Code hinter der Seite aufzurufen. Die Listbox zeigt alle angemeldeten Benutzer an (sie werden bei erfolgreicher Anmeldung zu einer globalen Liste hinzugefügt). Ich kann offensichtlich die Listbox aktualisieren, wenn ich vollständige Seitenaktualisierungen verwende, aber das ist nicht ästhetisch ansprechend. Ich habe zwei Probleme.Verwenden von jquery/ajax/webmethod zum Aktualisieren einer Listbox
wenn ich die app in chrome, und überprüfen netzwerkaktivität über dev-tools, ich kann nicht sehen, die webmethode aufgerufen wird. Ich habe andere Webmethoden, die (wie ich sehen kann) wie erwartet gefeuert/ausgeführt werden.
Ich schrieb das Skript basierend auf einem Beispiel, das ich gefunden habe, also bin ich nicht ganz sicher (ich bin relativ neu in diesen Bereichen), wenn ich (a) die Daten von der Liste richtig bekomme (ich will nur der Benutzername, der angezeigt werden soll) und (b) es korrekt an die Listbox anhängen.
hier ist der Webmethod:
[WebMethod()]
public static string[] getCurrentList()
{
int count = 0;
for(int i = 0; i < Global.ListUsers.Count(); i++)
count++;
string[] results = new string[count];
for (int i = 0; i < count; i++)
{
results[i] = Global.ListUsers[i].Username.ToString();**//edited...**
}
return results;
}
und das Skript:
$(function updateListbox() {
var lBox = $('select[id$=ListBox1]');
setInterval(function() {
$.ajax({
beforeSend: function (req) {
req.setRequestHeader("Accept", "application/json");
},
type: "POST",
url: "Homepage.aspx/getCurrentList",
data: "json=" + JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var results = data.d;
if (results.length > 0) {
var updatedList = [];
for (var i in results) {
updatedList.push(results[i]);
}
$(lBox).append(updatedList.join('\n'));
}
else alert("No new items to update...");
}
});
}, 5000);
});
alle Hilfe und Anregungen willkommen und geschätzt
danke für das Aufräumen, ich wusste nicht wirklich, wofür das Datenfeld war. Der Grund, warum ich das im Datenfeld habe, ist, weil ich einen Server 500 Fehler von den Entwicklertools in Chrome bekommen habe, und nach einer Suche, das war eine Lösung die ich gefunden habe - es hat den Fehler gestoppt, aber ich kann das nicht sehen webmethod wird wie oben angegeben aufgerufen. Ich habe eine andere webmethod queryInvitedBy, die ich sehe, wie alle 5 Sekunden (wie erwartet) aufgerufen wird, so bin ich ratlos, warum ich nicht sehen kann getCurrentList aufgerufen werden. – MattSull
Ich nahm, was im Datenfeld ist; Ich kann das webmethod jetzt schießen sehen, aber ich bekomme diesen Fehler wieder: "500 interner Serverfehler". Wenn ich in die Vorschau/Antwort auf die Anfrage schaue, sehe ich: "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt". – MattSull
Durchlaufen Sie Ihren C# -Code, um genau zu sehen, was die Ausnahme auslöst. Ihre erste for-Schleife fehlt Klammern ... – servarevitas3