如何从JavaScript获得homecontroller的值
本文关键字:homecontroller 的值 获得 JavaScript | 更新日期: 2023-09-27 18:21:52
我的项目中有一个计时器,当我停止它时,计时器值应该保存到数据库中,但我无法将计时器值从JavaScript获取到主控制器。
我的JavaScript是:
<script type="text/javascript">
document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
.
.
.
.
.
</script>
<script type="text/javascript">
$(document).ready(function () {
$("#End").click(function () {
$.ajax({ url: '/Home/SaveAnsDetails?classs=' + ($("#txtClass").val())
+ '&ExamDate=' + ($("#ExamDate").val())
+ '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd-->
type: "Post",
dataType: "json",
success: function (message) {
alert(message);
}
});
});
});
</script>
<div id="starttime" style="font-size:large; "></div>
家庭控制器编码是
[ActionName("SaveAnsDetails")]
public ContentResult SaveAnsDetails(ModelGridAllFeatures model, IList<VW_Grid_Answer1> ds, string ExamDate, string ddd)
{
}
ddd-get from starttime(计时器值)。当我在homecontroller中获取ddd值时,它包含一个空值。
有什么想法吗?
您的ajax调用是错误的。查看jQuery.ajax()上的文档,特别是查找向服务器发送数据部分。
$.ajax({
url:
'/Home/SaveAnsDetails?classs=' + ($("#txtClass").val())
+ '&ExamDate=' + ($("#ExamDate").val())
+ '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd-->
type: "Post",
dataType: "json",
success: function (message) {
alert(message);
}
});
您已指定发出post请求,但尝试将数据与url一起传递,省略了data
设置。这是错误的。如果使用这样的发布请求,则需要指定data
设置。在ajax调用中使用以下代码:
$.ajax({
url:
'/Home/SaveAnsDetails',
data:
'classs=' + ($("#txtClass").val())
+ '&ExamDate=' + ($("#ExamDate").val())
+ '&ddd=' + ($("#starttime").val()),
type: "POST",
dataType: "json",
success: function (message) {
alert(message);
}
});
在控制器中,您需要指定[HttpPost]
属性,以便能够区分POST
请求和GET
请求。
您不会将模型传递给控制器。相反,您使用传递到它的数据来实例化控制器中模型类的对象。使用POST
请求,您可以访问保存数据的FormCollection
。将Model.TryUpdateModel方法与Collection.ToValueProvider()方法结合使用,可以将值写入模型。你的控制器看起来像这样:
[HttpPost]
public ActionResult SaveAnsDetails(FormCollection collection)
{
var model = new ModelGridAllFeatures();
TryUpdateModel(model, new string[]
{
"classs",
"ExamDate",
"ddd"
}, collection.ToValueProvider());
}
您还可以将POST
请求与GET
请求合并。您可以将另一个参数传递给控制器,然后编辑ajax请求,以便相应地在请求url中使用该参数。
请尝试以下代码:
$(document).ready(function () {
$("#End").click(function () {
$.ajax({ url: '/Home/SaveAnsDetails',
data: {'classs': $("#txtClass").val(),
'ExamDate': $("#ExamDate").val(),
'ddd':$("#starttime").text()
},
type: "Post",
dataType: "json",
contentType:'application/json',
success: function (message) {
alert(message);
}
});
});
});
更改:
- 如果您需要它的post请求,那么为什么要通过URL参数发送数据,而不是在正文中发送
- 如果需要"Json",则还需要相应地指定"contentType"
- "starttime"是div元素,要获得它的值,正确的方法是使用text()jquery方法