jquery - Ajax 调用从 MVC3 Controller 获取 Json

标签 jquery ajax asp.net-mvc-3

我希望有人能帮助我。我正在尝试做一件非常基本的事情:使用 Jquery 从 MVC3 Controller 获取 Json。如果我直接调用 URI, Controller 会返回 Json http://www.youtipit.org/api/GetTipitByUrl?url=http://utipi.it/t/1834来自浏览器,但当我尝试执行以下操作时,我得到一个空结果(在 Firebug 中):

$.getJSON( 'http://www.youtipit.org/API/GetTipitByUrl?url=http://www.youtipit.org/t/J1833', null,

                 function(data) {

                   if (data) {
                     alert('It Works!!');
                     alert(data);
                   }
                 });

在 firebug 中,我收到 200 代码,但响应为空。我确信我可以在 Javascript 中做一些简单的事情来让它工作,但我对此很陌生。

最佳答案

您可能违反了same origin policy限制。除非您的网站托管在 www.youtipit.org 上,否则您无法向其发送 AJAX 请求。对于此限制,有两种可能的解决方法:

  • 远程站点支持JSONP (注意与 JSON 的区别)在这种情况下,JSON 响应被包装在一个特殊的回调函数中。为此,远程服务器必须支持它。如果是这种情况,请检查 API 文档。您显示的示例 url 在浏览器中运行,返回纯 JSON。
  • 如果远程服务器不支持 JSONP,但仅发送 XML 或 JSON,您将必须在您的域上编写一个 Controller 操作,该操作将充当您的域和远程域之间的桥梁。然后,您将 AJAX 请求发送到此 Controller 操作,该 Controller 操作又将使用 WebClient 向远程域发送 HTTP 请求。

关于jquery - Ajax 调用从 MVC3 Controller 获取 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925743/

相关文章:

jquery - 无法仅在数据表中的灰色行中更改 td 的背景颜色

jquery - 没有显示大图 (prev() click()attr())

带有 Ajax 的 PHP 数组 - 获取数据的正确方法?

c# - EF 5、.Net 4.5 加载多对一子对象时出现问题

asp.net-mvc-3 - MVC3 应用程序的异步日志记录

javascript - 当鼠标朝向或位于文档的顶部中心时运行 jQuery

javascript - Typeahead.js 和图像缩略图

c# - 如何在我的 View 中单击按钮时从 session ["cart"] 中删除项目?

javascript - 调用ajax加载的函数

c# - 检查 Controller 和 View 中的权限