【发布时间】: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 - stackoverflow.com/questions/2067472/what-is-jsonp-all-about
-
另外,如果您从另一个 URL 请求数据 - 使用 Web API 控制器不是更好吗?
标签: javascript c# jquery ajax asp.net-mvc