HTML vom JSON Webservice zurückgeben - was ist das ".d"?

8

Dies ist eine der Situationen, in denen ich mit einer neuen Technologie arbeiten musste, ohne die Grundlagen zu lernen.

Ich habe die folgende js Funktion, die zu PrintService aufruft, die mir das HTML zurückgibt, um in ein div zu injizieren:

%Vor%

Ich habe damit für ein Alter gekämpft, bevor ich das ".d" in ein anderes Beispiel

Also, es funktioniert - aber warum? Was ist das ".d"?

Entschuldigung, wenn das eine noob-Frage ist, aber Google ist hier nicht mein Freund.

Danke

Edit: Magnar hat recht, es ist eine .NET-spezifische Sache. Schau dir Rick Strahl hier an - Ссылка

Was mich verwirrt ist, dass es JSON zurückgeben muss, da mein Client-Skript-Code ziemlich glücklich über die Rückkehr ist, aber wenn ich auf den Browser zugreife, bekomme ich XML ...?

    
Duncan 11.04.2009, 10:50
quelle

2 Antworten

14

Der PrintService antwortet mit JSON, einem Datentransferformat, das auf der JavaScript Object Notation basiert. Der Datenparameter ist also ein Objekt, kein HTML-String. Dieses Objekt scheint ein Mitglied namens d zu haben, das den HTML-Code enthält.

Wenn Sie die URL direkt http://localhost/PrintService/PrintService.asmx/RenderPrintDialog aufrufen, sollten Sie folgendes sehen:

%Vor%

mit möglicherweise anderen Mitgliedern auch.

Die geschweiften Klammern bezeichnen ein Objekt, und innerhalb sind Schlüssel: Wert-Paare, die durch Kommata getrennt sind. Sie können mehr über JSON auf json.org lesen.

Genau deshalb heißt es " d ", dass Sie sich mit dem Autor des PrintService beschäftigen müssen. ;-) Vielleicht wäre markup oder html ein hilfreicher Name.

Bearbeiten

Es stellt sich heraus, dass Duncan der Autor des PrintService ist und das "d" selbst nicht enthält. Beim Besuch der URL sieht er XML, nicht JSON. Das .NET-Framework für verwendete Web-Services antwortet mit JSON, wenn es in der http-Anfrage danach gefragt wird. Das berüchtigte d -Member wird von diesem Framework als Wrapper hinzugefügt, um Cross-Site-Scripting zu verhindern.

Dieser Artikel erklärt das ganze Geschäft: Eine brechende Veränderung zwischen Versionen von ASP.NET AJAX

    
Magnar 11.04.2009, 11:13
quelle
4

ASP.Net nistet die JSON-Daten in der d-Eigenschaft aufgrund von Cross-Site-Scripting-Angriffen ein.

Es ist möglich, Skript-Code als JSON-Antwort zurückzugeben, und das Verschachteln der Daten in der .d-Eigenschaft macht es für den Browser nicht mehr möglich.

Siehe hier: JSON-Schwachstelle

Grüße K

    
Khb 11.04.2009 12:21
quelle

Tags und Links