支持JSONP的ASP.NET通用HTTP处理程序(.ashx)

时间:2010-09-13 17:44:20

标签: asp.net ajax json jsonp

有人可以显示返回JSON并支持跨域调用的HTTP处理程序示例。我正在使用jQuery的getJSON()将请求发送到我的Web服务器上的.ashx文件。

我明白我需要添加?callback =?到getJSON()url中我的url,但我不确定我的ashx文件中需要在服务器上做什么?

2 个答案:

答案 0 :(得分:10)

想出来。我将此函数添加到我的处理程序并调用它:

void WriteCallback(HttpContext context, string json)
        {
            context.Response.Write(string.Format("{0}({1});", context.Request["callback"], json));
        }

然后在浏览器中:

$(function () {
    $.getJSON('MyHandler.ashx?callback=?', { Foo: "Bar" }, function (data) {

        if (data.SomeCondition)
            $('#someElement').show();

    });
});

答案 1 :(得分:1)

“跨域”可能成为问题的唯一方法是,如果您使用某种状态机制(即:cookies)作为呼叫的一部分。你不应该这样做。

否则,请参阅此链接:ASP.NET - Passing JSON from jQuery to ASHX获取信息。有一些很好的代码示例可以向您展示如何做。