crossdomain $ .ajax和404错误

时间:2012-12-11 19:23:16

标签: ajax asp.net-mvc

我想从外部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" });
        }            
    }

4 个答案:

答案 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