2009-06-25 7 views
0

Wenn ich einen Beitrag von jquery tun wie so:

$.post("Row/getRowNames", { currRow: "MyRow", offset: 3 }, 
     function(rowNames) { 
      /* How do I interpret the data to 
     }, 
"json"); 

Wie interpretiere ich die Daten rowNames, die wieder aus dem Verfahren in der Steuerung übergeben wird? Ich brauche das json Ergebnis in ein Array von Strings, wie einige ...

Hier ist der Controller-Methode zu drehen, die die Zeilennamen bekommt:

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult getRowNames(string currRow, int offset) 
    { 
     return this.Json(_rowRepository.getRowNamesByOffset(currRow, offset)); 
    } 

und getRowNamesByOffset(currRow, offset) gibt ein Array von Strings.

Ich bin mir wirklich nicht sicher, wie Json funktioniert, was macht es mit dem Array, bevor es es an das Javascript zurückgibt? Wie soll das Javascript den Json manipulieren, um die benötigten Daten zu erhalten?

Antwort

0

JavaScript Object Notation (JSON) zurückgeführt wird und an die Callback übergeben:

Also im Grunde die Sache zu beachten ist, dass der Parameter in den Rückruf übergeben ist ein JSON-Objekt ...In diesem Fall ein serialisiertes Array von RowNames.

Hoffe, das hilft!

+0

Sie vermissten ein 'eval (rowNames)'. –

+2

@Mehrdad, das ist NICHT richtig. Die Verwendung von 'eval (rowNames)' wäre erforderlich, wenn der Aufruf $ .post ("Row/getRowNames", [DATA], [CALLBACK], "text") war. @Matt hat den Typ jedoch in seinem Aufruf als "json" angegeben. –

+0

Sie haben Recht. Es tut uns leid. Das habe ich nicht bemerkt. –

2

Sie müssen nichts tun. JSON ist native JavaScript-Objektdarstellung. Verwenden Sie einfach die rowNames in der Funktion, als ob es ein Array in Javascript deklariert.

Um den Javascript-Interpreter analysieren zu lassen, verwenden Sie eval Funktion übergeben das Ergebnis als ein Argument. Dies kann einige Sicherheitskonsequenzen haben, wenn Sie die Daten von einer nicht vertrauenswürdigen Quelle beziehen. Zu diesem Zweck könnten Sie einige JSON-Parser-Javascript-Bibliotheken verwenden, um den Parse-Task sicher zu handhaben (da sie keine möglichen JavaScript-Anweisungen darin ausführen, wie es eval tut).

0

Wenn Zweifel über die Daten zurückgegeben werden, Alert() es (oder console.log() es wenn Firebug).

Wenn es ein Ziel jeder Beschreibung ist, für in Schleife über sie:

for (var i in yourResult) { 
    alert(i + " = " yourResult[i]); 
} 

Dies zeigt Ihnen die Struktur von dem, was Sie zu tun haben.

Wenn yourResult ein JSON-String ist und Sie wollen es in JS drehen, versuchen:

yourResult = eval('(' + yourResult + ')'); 
-1

Sie benötigen einen JSON-Parser, die Sie auf der offiziellen JSON-Website zu bekommen. JSON erstellt durch Trennzeichen getrennte Zeichenfolgen innerhalb von Klammern, Klammern und Klammern, die ineinander verschachtelt sein können. JSON ist enger als XML, aber nicht sehr lesbar.

+1

Ich stimme nicht zu, ich finde JSON viel einfacher zu lesen als XML – BlackTigerX

2

JSON steht für JavaScript Object Notation.

Was das bedeutet, ist, dass der JSON-Code, der auf ein Objekt vom Webserver zurückgegeben wird durch JavaScript umgewandelt wird. Sie können eine JSON parser wie folgt verwenden:

var myObject = JSON.parse(myJSONtext); 

Sie können dann alle Eigenschaften Referenz

direkt durch das Objekt zurück
alert(myObject.item1); 
alert(myObject.item2); 
Verwandte Themen