【问题标题】:ASP.NET Generic HTTP Handler (.ashx) supporting JSONP支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)
【发布时间】:2011-04-11 19:18:19
【问题描述】:

谁能展示一个返回 JSON 并支持跨域调用的 HTTP 处理程序的示例。我正在使用 jQuery 的 getJSON() 向我的 Web 服务器上的 .ashx 文件发送请求。

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

【问题讨论】:

标签: asp.net ajax json jsonp


【解决方案1】:

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

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 对于第一个函数 - 今天在执行此操作时为我节省了一些时间。
  • 谢谢!我整天都在用头撞墙,没有意识到在进行 JSONP 调用时必须用回调函数名称包装 JSON 输出。
【解决方案2】:

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

否则,请参阅此链接:ASP.NET - Passing JSON from jQuery to ASHX 了解信息。有一些很好的代码示例可以告诉你该怎么做。

【讨论】:

  • 抱歉,这根本没有帮助。
猜你喜欢
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 2011-11-16
相关资源
最近更新 更多