2009-06-28 6 views
1

Meine mvc-Seite gibt json mithilfe der Funktion Json (mycomtclass) zurück, um ein JsonResult-Objekt zurückzugeben.C# Rückruf zu JsonResult hinzufügen

Das funktioniert gut, außer, ich muss den JSON in einen Rückruf umbrechen, so dass jQuery es verwenden kann.

Ich will es so:
jsonp1246168411282 ({ "myjson": "einige Werte"})

aber ich bin immer diese: { "myjson": "einige Werte"}

Gibt es eine Möglichkeit, das C# JsonResult mit Klammern und dem Jquery Callback zu "wickeln"?

Dank

Der Lorax

+0

Für alle anderen, dass eine Lösung für diese Bedürfnisse und will nicht einen WCF-Dienst überprüfen Sie diesen Link verwenden aus: http: // stimms. blogspot.com/2009/04/aspnet-mvc-returning-jsonp.html –

+0

oder alternativ können Sie dies tun: string json_string = (Rückruf + "(" + new System.Web.Script.Serialization.JavaScriptSerializer(). Serialize (json) + ")"); JavaScriptResult Ergebnis = new JavaScriptResult(); result.Script = json_string; Ergebnis zurückgeben; –

Antwort

2

JQuery die Json Antwort ganz gut verwenden kann, wenn Sie in einer anderen Domäne diese Aktion von einer Seite aufrufe. Machst du das? Wenn ja, empfehle ich Ihnen, einen wcf-Dienst zu erstellen, der jsonp unterstützt. Beispiel here

Wenn nicht, können Sie einfach die 0quity-Methode getJson verwenden.

+0

Hallo redsquare. Ja, mein Dienst muss von anderen Domänen aus erreichbar sein. Zur Zeit habe ich eine View-Seite, die den JSON zurückgibt, aber ich arbeite an einer besseren Lösung, die es mir erlaubt, eine große benutzerdefinierte Klasse in Json zu serialisieren und sie als ein Objekt zurückzugeben. Ich könnte nur einen Open-Source-JSON-Serializer verwenden, um es in eine Zeichenfolge umzuwandeln und es als Zeichenfolge zurückzugeben. Danke für Ihre Hilfe gedacht. Mit freundlichen Grüßen, Die Lorax –

+0

gute Idee, ich benutze diese Lib http://james.newtonking.com/projects/json-net.aspx – redsquare

0

ASP.net MVC returning JSONP

Auch so etwas wie:

public JavaScriptResult Test() 
{ 
    JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 
    string callback = Request.Params["callback"] + "(" + javaScriptSerializer.Serialize("testing, testing") + ");"; 
    return JavaScript(callback); 
}