【问题标题】:Ajax call to get Json from MVC3 controllerAjax 调用从 MVC3 控制器获取 Json
【发布时间】:2017-04-30 13:49:14
【问题描述】:

我希望有人可以帮助我。我正在尝试做一件非常基本的事情:使用 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);
                   }
                 });

在萤火虫我得到一个 200 代码,但响应是空的。我确信我可以在我的 Javascript 中做一些简单的事情来让它工作,但我是新手。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 很好的答案....它为我指明了正确的方向。你建议使用JSonp是对的。这篇文章向我展示了如何实现 JSONP 结果,现在我得到了我的 Json:[链接]stackoverflow.com/questions/4795201/… 你为我节省了很多时间,非常感谢。如果你有兴趣,我会在 [link]youtipit.org[/link] 上给你一个比特币小费(请注意,这是一个我共同创建的网站,旨在奖励在线帮助他人的人)。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多