Ajax调用从MVC3控制器获取Json

时间:2011-08-03 11:29:15

标签: jquery ajax asp.net-mvc-3

我希望有人可以帮助我。我正在尝试做一个非常基本的事情:使用Jquery从MVC3控制器获取Json。如果我从浏览器直接调用URI http://www.youtipit.org/api/GetTipitByUrl?url=http://utipi.it/t/1834,控制器会返回Json,但是当我尝试执行以下操作时,我得到一个空结果(在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中有一些简单的功能可以让它工作,但我是新手。

1 个答案:

答案 0 :(得分:4)

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

  • 远程站点支持JSONP(注意与JSON的区别),在这种情况下,JSON响应包含在特殊的回调函数中。为此,远程服务器必须支持它。如果是这种情况,请查看API的文档。您显示的示例URL以及在浏览器中工作的示例url返回普通JSON。
  • 如果远程服务器不支持JSONP,但只发送XML或JSON,则必须在域上编写控制器操作,该操作将充当域和远程域之间的桥梁。然后,您将向此控制器操作发送AJAX请求,该操作又将使用WebClient向远程域发送HTTP请求。