我的项目中有一个计时器,当我停止它时,计时器值应保存到数据库中,但我无法从JavaScript到homecontroller获取计时器的值。
我的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从starttime获取(计时器值)。当我在homecontroller中获得ddd值时,它包含一个空值。
有什么想法吗?
答案 0 :(得分:0)
您的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);
}
});
您已指定发布帖子请求,但您尝试将数据与网址一起传递,省略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中使用该参数。
答案 1 :(得分:0)
请尝试以下代码:
$(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);
}
});
});
});
的变化: