4 Stimmen

Abrufen von Daten aus der Ajax-Antwort

Für die Schule muss ich einen Twitter-Client mit ASP.NET entwickeln.

In der App habe ich eine Liste von Tweets mit einem Link zum Löschen. Dieser Link wird mit dem Helper Ajax.ActionLink() erstellt und ich habe eine Callback-Funktion für das OnSuccess-Ereignis angegeben.

Dieser Link ist in Ordnung: die Aktion wird ausgeführt, der Callback wird ausgelöst, aber ich kann nicht auf die Daten zugreifen, die in der Ajax-Antwort gesendet werden.

Der Callback erhält nur ein Argument. Hier ist der Dump dieses Objekts:

>> Sys.Mvc.AjaxContext
$0: 0
$1: null
$2: Sys.Net.XMLHttpExecutor
$3: Sys.Net.WebRequest
$4: null

Wo ist mein AntwortText? Ich weiß, dass die Antwort einen Inhalt hat (laut Chrome-Entwickler-Tools) und ich möchte wirklich darauf zugreifen.

Bonus: Kann der Ajax-Client die Antwort automatisch als JSON parsen (die Aktion gibt JSON korrekt mit der JSON-Methode zurück)?

Danke! ;)


Die Frist für dieses Schulprojekt ist abgelaufen. Ich habe get_data für die Antwort verwendet.

Ich bin ziemlich enttäuscht über den Mangel an Dokumentation für diese triviale Notwendigkeit. Selbst jetzt, wo ich den Weg kenne, kann ich ihn nicht auf MSDN finden So schade :(

Zurück zu meinem geliebten Ruby on Rails, ich fühle mich besser.

Guten Tag und trotzdem vielen Dank für Ihre Hilfe! :)

2voto

Jason Goemaat Punkte 27951

Versuchen Sie den Aufruf get_object() auf Ihrem AjaxContext, um ein Javascript-Objekt oder get_data(), um den Text zu erhalten. Eine einfachere Methode ist jedoch, Ihre OnSuccess-Funktion ein Argument, das das zurückgegebene Objekt sein wird, zu haben.

public ActionResult ReturnJson()
{
    return Json(new { TestMessage = "Hello, world!" }, JsonRequestBehavior.AllowGet);
}

Und die Aussicht...

<script type="text/javascript">
    function AjaxSuccess(obj) {
        alert(obj.TestMessage);
    }
</script>

@Ajax.ActionLink("Say Hi", "ReturnJson", new AjaxOptions() { OnSuccess = "AjaxSuccess" })

0voto

Tokes Punkte 216

Wenn Sie innerhalb Ihres Codes auf den responseText zugreifen möchten, sollten Sie nicht AJAX (Asynchronous JavaScript And XML), sondern SJAX (Synchronous JavaScript And XML) verwenden.

Wenn Sie AJAX verwenden, wartet Ihr Code nicht auf den responseText, sondern wird einfach weiter ausgeführt. Wenn Sie also versuchen, später in Ihrem Code darauf zu verweisen, kann es sein, dass es nicht funktioniert, da es möglicherweise noch nicht verarbeitet wurde.

Wenn Sie SJAX verwenden, wartet Ihr Code auf den responseText, bevor er weiter ausgeführt wird.

Ich verwende kein ASP.NET, kann also nicht mit dem Code helfen.

So wird es in JavaScript gemacht: JavaScript - AJAX / SJAX - Übermittlung von Formulardaten an ein Skript

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X