2011-08-03 47 views
5

我希望有人能帮助我。我试图做一件非常基本的事情:使用Jquery从MVC3控制器中获取Json。控制器返回JSON的很好,如果我直接http://www.youtipit.org/api/GetTipitByUrl?url=http://utipi.it/t/1834从浏览器中调用URI的,但我得到一个空的结果(萤火虫)当我试图做到以下几点:Ajax调用从MVC3控制器获得Json

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

       function(data) { 

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

的萤火,我收到了200码,但回应是空的。我确定有一些简单的东西,我可以在Javascript中做到这一点,但我是新来的。

回答

4

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

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

很好的回答....它指出了我正确的方向。你是正确的建议使用JSonp。 这篇文章告诉我如何实现一个JSONP结果,现在我得到我的Json: [link] http://stackoverflow.com/questions/4795201/asp-net-mvc-3-jsonp-does-this-work- with-jsonvalueproviderfactory [/ link] 你节省了我很多时间,谢谢。如果你有兴趣,我会给你一个关于[链接] http://www.youtipit.org [/ link]的比特币小费(请注意,这是我共同创建的网站,用于奖励在线帮助其他人的网站)。 再次感谢。 – kSeudo

相关问题