我想从外部ASP.NET MVC站点(在这种情况下 - 从我的站点)使用$.ajax
检索一些数据。以下代码标注404 Not Found error
(当然url
有效。
但是,如果我将网址从url: 'http://myurl.com/Home/GetMyCode/?id=mycode'
更改为url: 'http://localhost:123/Home/GetMyCode/?id=mycode'
,一切都会好的。那么,如何修复呢?
$.ajax({
url: 'http://myurl.com/Home/GetMyCode/?id=mycode',
type: 'POST',
contentType: "application/json; charset=utf-8",
crossDomain: true,
success: function (res) {
...
},
error: function (jqXHR, textStatus, errorThrown) {
...
}
});
[HttpPost]
public JsonResult GetMyCode(string id)
{
try
{
return Json(new { result = "ok", resultData = "OK") });
}
catch (Exception e)
{
return Json(new { result = "error", resultData = "An error occured" });
}
}
答案 0 :(得分:2)
处理跨域Ajax调用的两种方法:
JSONP:跨域访问的当前标准
JSONP是某些网站用来公开其内容的惯例,这种方式使调用者更容易通过脚本使用数据,即使是从外部域也是如此。诀窍在于让站点返回一些JSON内容,而不是作为普通字符串,而是包含在脚本函数调用中。有关详细信息..
跨域资源共享(CORS)
要在不支持cors但允许跨域XHR请求(Windows小工具等)的环境中启用跨域请求,请设置$.support.cors = true;
您只需告诉jQuery您可以在可能存在跨域XHR请求的环境中使用。
答案 1 :(得分:1)
为了检索数据跨域,您可能需要使用'jsonp'
答案 2 :(得分:0)
看起来可能是DNS问题。你能到达:http://myurl.com吗?
您尝试访问的.com域名是否可公开访问?或者它是localhost的环回?
答案 3 :(得分:0)
该教程对我有用,我必须在我的MVC项目中实现JSONP处理。 http://www.codeguru.com/csharp/.net/net_asp/using-jsonp-in-asp.net-mvc.htm