从另一个localhost获取json

时间:2015-12-29 05:08:03

标签: json ajax asp.net-mvc

我设计了2个网站,第一个位于https://localhost:44300/,第二个位于https://localhost:44301/

在第二个本地主机的Home控制器中,我声明:

[HttpPost]
public ActionResult GetPictureUrl
{
   return Json(new { success = true, url = "~/Content/Images/Img001.png" });
}

点击按钮后,我想在第一个localhost中获取json:

<button>Get picture url</button>
<script>
$('button').click(function () {
   $.ajax({
      url: 'https://localhost:44301/Home/GetPictureUrl',
      type: 'POST',
      //dataType: 'jsonp' //I'd tried this but still not working
   }).done(function (data) {
      if (data.success) {
         alert(data.url)
      }
   })
})
</script>

以下是我在控制台日志中遇到的错误:

  

GET   https://localhost:44301/Home/GetPictureUrl?callback=jQuery21407544594064820558_1451364678040&_=1451364678041

为什么GET

我在ajax中设置type: 'POST',但我没有向控制器发送任何内容作为参数。但正如您在上面看到的那样,callback_是什么?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

将这些行添加到web.config<system.webServer>(两个网站)

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
  </customHeaders>
</httpProtocol>

之后,我可以使用:

$('button').click(function () {
        $.ajax({
            url: 'https://localhost:44301/Home/GetPictureUrl',
            type: 'POST' //or method: 'POST'
        }).done(function (data) {
            if (data.success) {
                alert(data['url'])
            }
        })
    })

感谢@Eranda和@SBirthare