如何使用 AJAX 将数据发布到 ASP.NET MVC 控制器?
Posted
技术标签:
【中文标题】如何使用 AJAX 将数据发布到 ASP.NET MVC 控制器?【英文标题】:How to post data to ASP.NET MVC controller using AJAX? 【发布时间】:2016-02-07 18:38:36 【问题描述】:我想使用 jQuery AJAX 将 Mobile
数字和 EmailID
发送到我的 MVC 控制器,以检查这些详细信息是否已存在于数据库中。
当我在我的操作方法上使用[HttpPost]
属性时,我收到以下错误:
跨域请求被阻止:同源策略不允许读取 url 处的远程资源。
如果我删除 [HttpPost]
属性,我的操作方法将被调用,但在操作方法参数中收到的所有值都是 null
。
下面是动作方法代码:
public class LogOnModel
public string Mobile get; set;
public string EmailID get; set;
[HttpPost]
[AllowAnonymous]
///AJAXService/LogOnAjax
public ActionResult LogOnAjax(LogOnModel obj)
return Json(true);
下面是我的 AJAX 调用:
var LoginModel =
'Mobile': "ASH",
'EmailID': "MITTAL",
;
$.ajax(
url: 'http://localhost:51603/AJAXService/LogOnAjax',
type: 'GET',
contentType: 'application/json',
dataType: 'jsonp',
data: JSON.stringify(LoginModel),
success: function (result)
if (result == true)
window.location = "/Dashboard";
else
$QuickLoginErrors.text(result);
);
我已将以下代码放在我的 web.config 文件中以避免 CORS 错误:
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
【问题讨论】:
如果您发布到自己的网站,我不会期望出现 CORS 错误。你能检查一下网址是否正确吗? 你看到了吗? ***.com/questions/6290053/… 【参考方案1】:如果AjaxService
控制器与您正在处理的View
在同一个项目中:
var LoginModel =
Mobile: "ASH",
EmailID: "MITTAL"
;
$.ajax(
url: '@Url.Action("LogOnAjax","AJAXService")', // try to use Url Helper when possible
type: 'POST', // use Get for [HttpGet] action or POST for [HttpPost]
//contentType: 'application/json', not needed
//dataType: 'jsonp', jsonp is for sending to a site other than the current one..
data: LoginModel, // no need to stringify
success: function (result)
if (result == true)
window.location = "/Dashboard";
else
$QuickLoginErrors.text(result);
);
【讨论】:
不,我刚刚在一个简单的 test.html 文件中创建了这个 html 代码,然后通过 Chrome 浏览器打开了这个 html 文件。我的视图中没有此代码.. 非常感谢 Jamie...我刚刚在我的视图中添加了 AJAX 调用,之后一切都开始工作......再次感谢。【参考方案2】:保留[HttpPost]
并将此行添加到您的$.ajax
行之前:
$.support.cors = true;
同时更改您的$.ajax
方法以匹配您的[HttpPost]
。换行:
type: 'GET',
到
method: 'POST',
注意:这仅适用于我的 IE。 Chrome 仍然拒绝完成 Ajax 调用。不过,那是前一段时间的事了,我不确定新版本的 Chrome 是否可以使用这条线。
非常重要的注意事项:仅在开发中使用此行。不要使用此行编译您的应用程序。
【讨论】:
以上是关于如何使用 AJAX 将数据发布到 ASP.NET MVC 控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Asp.Net MVC5 中使用 Ajax 将数据库更改保存到拖放列表
如何在 ASP.NET MVC 中使用 jQuery ajax 方法将数据列表发送到控制器操作方法?
如何使用 ASP.NET MVC 通过 Ajax 将检查的行发送到服务器?
如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用