我的解决方案包含两个asp.net MVC项目。一个将成为一个网络服务,另一个是一个普通的网站,从上述网络服务获取数据。从一个asp.net web应用程序发送JSON到另一个
我在我的网络服务到家控制器下面的方法:
...
public JSONResult GetTeacher(){
return JSON(new {TeacherName = this.teacher.name });
}
我试图访问从其他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开发服务器,同时在不同的端口。其结果是,当$就调用发生了,我得到一个弹出这个信息:
XMLHttpRequest cannot load http://localhost:11370/Home/GetTeacher.
Origin http://localhost:11510 is not allowed by Access-Control-Allow-Origin.
:
the page at localhost:11510 says:
"readystate":0, "responsetext": "" , "status":0, "statustext":"error"
当我尝试在谷歌浏览器的控制台,我得到了以下信息直接运行脚本
任何有关如何实际使用$ .ajax访问方法的帮助将不胜感激。
编辑:我也试着制作一个简单的html文件,看看如果我打电话给web服务会发生什么。同样的结果。另外,当我只输入方法的url时,它可以正常工作并显示教师的姓名。
感谢您的支持。我并不十分关心跨浏览器兼容性,因为结果将用于iOS应用程序。 – user1851327
太棒了,那么你可以使用['CORS'](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)。只需在'GetTeacher'控制器操作中设置'Access-Control-Allow-Origin'响应头。 –