gpt4 book ai didi

asp.net - 将 JSON 从一个 ASP.NET Web 应用程序发送到另一个

转载 作者:行者123 更新时间:2023-12-01 01:16:40 25 4
gpt4 key购买 nike

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

我的网络服务家庭 Controller 中有以下方法:

...
public JSONResult GetTeacher(){
return JSON(new {TeacherName = this.teacher.name });
}

我正在尝试使用此 $.ajax 方法从其他网络应用程序(将成为网站)访问此方法:

$.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 文件,看看如果我调用网络服务会发生什么。相同的结果。另外,当我只需输入该方法的 url 时,它工作正常并显示老师的姓名。

最佳答案

由于same origin policy restriction内置浏览器无法发送跨域 AJAX 请求。一种可能的解决方法是使用 CORS但由于并非所有浏览器都支持它,如果您想要跨浏览器解决方案,您可以考虑使用 JSONP .

您可以看看this custom JsonpResult我写这篇文章是为了说明如何从不同的域使用 Controller 操作。需要注意的是,jQuery 的 JSONP 实现仅适用于 GET 请求。您不能跨域 POST 到 Controller 操作。如果您需要这样做,实现此目的的唯一可靠方法是在主域上编写服务器端脚本,该脚本将充当两个域之间的桥梁。然后,您将 AJAX 请求发送到这个新脚本,该脚本会将请求委托(delegate)给远程域并返回结果。

关于asp.net - 将 JSON 从一个 ASP.NET Web 应用程序发送到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com