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

3

请问有没有人能给出一个HTTP处理程序的示例,该处理程序返回JSON并支持跨域调用。我正在使用jQuery的getJSON()方法向我的Web服务器上的一个.ashx文件发送请求。

我知道我需要在getJSON()的URL中添加?callback=?,但我不确定在我的ashx文件中服务器端需要做些什么。


可能是ASP.NET - 从jQuery传递JSON到ASHX的重复问题。 - NotMe
@Chris Lively - 不这么认为。 - Bigglesby
2个回答

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 对于第一个函数,它在我今天进行这项工作时节省了我一些时间。 - James Skemp
谢谢!我一整天都在苦思冥想,没意识到在进行JSONP调用时需要用回调函数名称包装JSON输出。 - dgundersen

1
唯一可能成为问题的“跨域”方式是,如果您在调用中使用某种状态机制(即:Cookie)。而这是不应该做的。
否则,请参见此链接:ASP.NET - Passing JSON from jQuery to ASHX,了解更多信息。有些好的代码示例可以向您展示该怎么做。

抱歉,那一点也没有帮助。 - Bigglesby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接