我正在尝试提供ajax POST发送的ASP.NET MVC控制器中的数据。在客户端,我使用传统的XMLHttpRequest对象和send()方法而不是jQuery.ajax()。
你知道如何从控制器中的send()获取变量吗?在文档http://www.xul.fr/XMLHttpRequest-object.html中,我读过它必须是字符串。
我的客户端:
var data1 = "some string";
var data2 = "other string";
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://localhost:44301/Home/SaveDataInDB", true);
xhr.send(data1, data2);
xhr.onreadystatechange = saved;
我的服务器端:
[HttpPost]
public JsonResult SaveDataInDB(string data1, string data2)
{
var dbobj = new DbObj
{
field1 = data1,
field2 = data2
};
if (User.Identity.IsAuthenticated)
{
dbobj.user = User.Identity.Name;
}
else
{
dbobj.user = "anonymous";
}
db.DbObj.Add(dbobj);
db.SaveChanges();
return Json(true);
}
答案 0 :(得分:1)
你可以这样做,假设这是你的xmlHttpRequest -
<script type="text/javascript">
var request = new XMLHttpRequest();
var o = new Object();
o.data1 = "Rami";
o.data2 = "Ramilu";
request.open('POST', '/Home/xhr', true);
request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
request.setRequestHeader('Content-Length', JSON.stringify(o).length);
request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
alert(request.responseText);
}
}
request.send(JSON.stringify(o));
</script>
在服务器端,以这种方式定义ViewModel -
public class XhrViewModel
{
public string data1 { get; set; }
public string data2 { get; set; }
}
然后您的控制器操作想要获取此数据 -
public ActionResult xhr(XhrViewModel model)
{
return Content("success", "text/plain");
}
输出将是 -