Darkleo’s Blog
Ein Schatz, der seinen Besitzer überallhin begleitet.

JSONPI mit ASP.NET

February 11th, 2012 by darkleo

JSONPI - ist JSONP + IFrame eine Möglichkeit POST Aufrufe zu erzeugen auf Domains die dem eignen Context nicht angehören zugreifen zu können.

https://github.com/benvinegar/jquery-jsonpi

Das Beispiel läuft mit PHP und hier ein HttpHandler der es ermöglicht JSONPI mit ASP.NET zu verwenden.

<script type="text/javascript">

$(function () {

$.ajax({

url: 'JSONPI.ashx',

type: 'POST',

dataType: 'jsonpi', // <---

params: { 'resulttype': 'project' },

success: function (response) {

alert(response.length);

}

});
});

</script>

und hier noch der HandlerCode:

public void ProcessRequest(HttpContext context)

{
context.Response.ContentType = "text/html";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;

var callback = context.Request.Params["callback"];

List<Project> items = new ProviderFactory().GetProjectProvider().Get();

string json = string.Empty;

System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<Project>));

using (MemoryStream ms = new MemoryStream())

{

serializer.WriteObject(ms, items);

json = System.Text.Encoding.UTF8.GetString(ms.ToArray());

}

var output = "<!DOCTYPE html><html><head>" +

"<script>// document.domain = '" + context.Request.UserHostName + "';</script>" +

"</head>" +

"<body>" +

"<script type=\"text/javascript\"> window.parent." + callback + "(" + json + ");</script>" +

"</body></html>";

context.Response.Write(output);

}

Posted in .NET, ASP.NET, C#

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.