【问题标题】:AJAX call a ASP MVC actionAJAX 调用 ASP MVC 动作
【发布时间】:2016-05-14 18:36:59
【问题描述】:

我尝试通过 ajax 从域外部调用 ASP MVC 操作。

设置

我已经托管了一个包含此操作的 MVC 应用程序:

[HttpPost]
[AllowAnonymous]
public ActionResult AjaxLogin(LoginViewModel model)
{
    [..Login stuff..]
    return Json(new { Url: "...", Result: "..." });
}

用法

为了测试,我尝试使用 Firefox 的 HttpRequester 插件进行手动调用,结果如下:

它工作正常,答案如预期。所以现在我想从第二个网页(不同的域)进行 ajax 调用。

我的 jquery (2.2.0) ajax 调用如下所示:

var requestData = {
    model: {
        Email: emailValue,
        Password: passwordValue
    }
};

var requestPlain = JSON.stringify(requestData);

$.ajax({
    url: json_login_url,
    data: requestData,
    method: 'POST',
    async: false,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (result, textStatus, jqXHR) {
        [...]                     
    },
    error: function (jqXHR, textStatus, errorThrown) {
        [...]
    },
    beforeSend: function (jqXHR, settings) {
        return true;
    },
    complete: function (jqXHR, textStatus) {
    },
});

问题

ajax 调用只会给我一个错误。

那么为什么我的 testcall 可以工作,但我的 ajax 调用却不行?

尝试

我还尝试使用 firefox 调试工具进行网络分析。

但我不明白为什么它不起作用,因为它显示“状态代码 200”但结果为空!?

【问题讨论】:

标签: javascript c# jquery ajax asp.net-mvc


【解决方案1】:

这可能会也可能不会解决您的问题,但如果您要进行跨域 AJAX 调用,请确保您设置了 CORS:

Setting Access-Control-Allow-Origin in ASP.Net MVC - simplest possible method

【讨论】:

  • 但这并不能解释为什么使用 HttpRequester 的测试有效?如果这是解决方案,它也应该失败。
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2019-12-04
  • 2010-10-13
相关资源
最近更新 更多