AJAX 调用 ASP MVC 动作
Posted
技术标签:
【中文标题】AJAX 调用 ASP MVC 动作【英文标题】:AJAX call a ASP MVC action 【发布时间】: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”但结果为空!?
【问题讨论】:
我不确定这是不是答案,但您是否尝试过 JSONP - ***.com/questions/2067472/what-is-jsonp-all-about 另外,如果您从另一个 URL 请求数据 - 使用 Web API 控制器不是更好吗? 【参考方案1】:这可能会也可能不会解决您的问题,但如果您要进行跨域 AJAX 调用,请确保您设置了 CORS:
Setting Access-Control-Allow-Origin in ASP.Net MVC - simplest possible method
【讨论】:
但这并不能解释为什么使用 HttpRequester 的测试有效?如果这是解决方案,它也应该失败。以上是关于AJAX 调用 ASP MVC 动作的主要内容,如果未能解决你的问题,请参考以下文章