支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)
Posted
技术标签:
【中文标题】支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)【英文标题】:ASP.NET Generic HTTP Handler (.ashx) supporting JSONP 【发布时间】:2011-04-11 19:18:19 【问题描述】:谁能展示一个返回 JSON 并支持跨域调用的 HTTP 处理程序的示例。我正在使用 jQuery 的 getJSON() 向我的 Web 服务器上的 .ashx 文件发送请求。
我知道我需要添加 ?callback=?到我的 getJSON() url 中的 url,但我不确定在我的 ashx 文件中的服务器上需要做什么?
【问题讨论】:
ASP.NET - Passing JSON from jQuery to ASHX的可能重复 @Chris Lively - 不要这么认为。 【参考方案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 了解信息。有一些很好的代码示例可以告诉你该怎么做。
【讨论】:
抱歉,这根本没有帮助。以上是关于支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)的主要内容,如果未能解决你的问题,请参考以下文章
使用 JQuery 访问 ASP.net Web 服务时出错 - JSONP
如何使用 JSONP 将复杂数组发送到 asp.net mvc 控制器
ASP.NET中JSONP的两种实现以及其他跨域解决方案的简单实现