将JSON从一个asp.net web应用程序发送到另一个asp.net web应用程序

将JSON从一个asp.net web应用程序发送到另一个asp.net web应用程序,asp.net,asp.net-mvc,jquery,asp.net-development-serv,Asp.net,Asp.net Mvc,Jquery,Asp.net Development Serv,我的解决方案包含两个asp.net MVC项目。一个是web服务,另一个是普通网站,从前面提到的web服务获取数据 我的web service home controller中有以下方法: ... public JSONResult GetTeacher(){ return JSON(new {TeacherName = this.teacher.name }); } 我正试图通过使用此$.ajax方法从另一个web应用程序(即将成为网站)访问此方法: $.ajax({ type

我的解决方案包含两个asp.net MVC项目。一个是web服务,另一个是普通网站,从前面提到的web服务获取数据

我的web service home controller中有以下方法:

...
public JSONResult GetTeacher(){
   return JSON(new {TeacherName = this.teacher.name });
}
我正试图通过使用此$.ajax方法从另一个web应用程序(即将成为网站)访问此方法:

$.ajax({
    type: 'GET',
    url: 'localhost:11370/Home/GetTeacher',
    contentType: 'application/json; charset=utf-8',
    success: function (response) {
        alert(JSON.stringify(response));
        $('#results').html('Welcome, ' + response.Name);
    },
    error: function (error) {
        alert(JSON.stringify(error));
    }
});
当我开始调试我的解决方案时,它会打开两个web开发服务器,都在不同的端口上。因此,当发生$.ajax调用时,我会弹出一个包含以下信息的弹出窗口:

the page at localhost:11510 says:
"readystate":0, "responsetext": "" , "status":0, "statustext":"error"
当我尝试直接在google chrome控制台中运行脚本时,我收到以下消息:

XMLHttpRequest cannot load http://localhost:11370/Home/GetTeacher. 
Origin http://localhost:11510 is not allowed by Access-Control-Allow-Origin.
如果您有任何关于如何使用$.ajax实际访问该方法的帮助,我们将不胜感激

编辑:我还尝试制作一个简单的html文件,看看如果调用web服务会发生什么。同样的结果。另外,当我只是键入该方法的url时,它工作正常并显示教师的姓名

由于内置浏览器的限制,您无法发送跨域AJAX请求。一个可能的解决方法是使用,但由于不是所有浏览器都支持它,如果你想要一个跨浏览器解决方案,你可以考虑使用.<
您可以看看我写的,以说明如何从不同的域使用控制器操作。需要注意的是,jQuery的JSONP实现仅适用于GET请求。您不能跨域发布到控制器操作。如果需要这样做,实现这一点的唯一可靠方法是在主域上编写服务器端脚本,该脚本将充当两个域之间的桥梁。然后将AJAX请求发送到此新脚本,该脚本将请求委托给远程域并返回结果。

谢谢。我不太关心跨浏览器的兼容性,因为结果将在iOS应用程序中使用。太好了,那么你可以使用。只需在
GetTeacher
控制器操作中设置
accesscontrolalloworigin
响应头。