jQuery-AJAX-Aufruf ein ASP.NET WebMethod
Ich habe die folgende jQuery-AJAX-request:
function sendUpdate(urlToSend) {
var code = AccessCode;
var url = urlToSend;
var options = { error: function(msg) { alert(msg.d); },
type: "POST", url: "webmethods.aspx/UpdatePage",
data: "{ accessCode: " + code + ", newURL: '" + url + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function(response) { var results = response.d; } };
$.ajax(options);
}
Und die entsprechenden ASP.NET WebMethod:
[WebMethod]
public static bool UpdatePage(string accessCode, string newURL)
{
bool result = true;
try
{
HttpContext.Current.Cache[accessCode + "l"] = newURL;
}
catch
{
result = false;
}
return result;
}
Dass alle arbeiten korrekt mit "async:false", aber ich muss es loswerden, wie es friert der browser, bis die Antwort empfangen wird. Jetzt den AJAX-request oben gibt "undefined".
Könnte mir jemand sagen, warum es passiert und wo das problem ist?
Dank.
Was ist undefined, "Antwort" oder "Antwort.d"? Sie sollten sehen, was die vollständige response-Objekt ist zu sehen, ob es gibt Ihnen eine Fehlermeldung vom server.
InformationsquelleAutor cycero | 2011-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie wirklich sicher, dass richtig zu codieren dieses JSON.
JSON.stringify
ist die zuverlässigste Methode:Dadurch wird sichergestellt, dass selbst wenn die
code
undurl
Variablen enthalten einige gefährliche Zeichen, brechen Sie Ihre string-Verkettungen in der resultierenden JSON-am Ende wird alles korrekt codiert. Das JSON-Format.stringify-Methode ist natievly gebaut in modernen Browsern, aber wenn Sie benötigen, um Unterstützung von legacy-Sie könnten json2.js.Auch, weil Sie code ist nicht mehr blockieren, sollten Sie sicherstellen, dass, wenn Sie nennen diese
sendUpdate
von einigen button klicken oder ein Formular abschicken stornieren Sie die Standard-Aktion, durch die Rückgabe von false.InformationsquelleAutor Darin Dimitrov
Mein Weg korrekt funktioniert:
In der Datei .js, definiere ich diese Funktion aufrufen webmethod-in-Datei .cs:
Dann rufen Sie zu verwenden (call-in file.js):
InformationsquelleAutor Bkillnest
Das "undefined" könnte die Folge sein, eine server-Fehlermeldung.Wenn Sie mit Firebug,Firefox(oder jeder gute client-debugging-tool) finden Sie die Fehler, die vom server zurückgegeben werden. Fügen Sie die Fehler,falls vorhanden.
Dennoch habe ich auch festgestellt, das die "Daten" für "accessCode" ist nicht richtig, eingeschlossen in Anführungszeichen (' '
Die korrigierten Daten option wäre :
PS:
Seit 'Optionen' haben eine andere Bedeutung in Jquery, ich würde empfehlen, die änderung der Variablen-Namen wie 'Einstellung' . Ändern 'var options' , 'var-Einstellungen'. 🙂
InformationsquelleAutor Antony Thomas