我正在使用Jquery 1.9.1,ASP.NET MVC 3,.Net 4.0框架,C#和Targeting IE 8作为浏览器客户端(不幸的是,此要求没有弹性)。
我有一个视图,我正在尝试实现自动保存功能,通过经常在幕后进行的 ajax 调用来保存数据。Jquery 帖子有效,数据绑定到我的模型;但是,发送的数据是页面首次加载时存在的表单值,不包括页面上所做的任何更改。我敢肯定这是我在某处缺乏理解,但我不确定故障的确切位置。我执行这篇文章的代码如下。我已经验证了正在提交的数据,这是通过Fiddler2的HTTP POST。
思潮?
<script type="text/javascript">
var postActionUrl = '@Url.Action("AjaxSave", "AjaxPost")';
var formData = $('form').serialize();
function AutoSave() {
$.ajax({
url: postActionUrl,
type: 'POST',
data: formData,
datatype: 'html',
success: function (result) {
var txt = "result: " + result.success + " Message: " + result.message;
alert(txt);
}
});
}
$(document).ready(function () {
var autoSaveFrequency = "@RulesService.GetAutoSaveIntervalInMiliseconds()";
alert("Will be saving every " + (autoSaveFrequency) + " seconds.");
setInterval(AutoSave, autoSaveFrequency);
});
</script>
在AutoSave
方法的范围内移动$('form').serialize()
。当您序列化表单一次并重复使用它时存在问题
function AutoSave() {
var formData = $('form').serialize();
$.ajax({
url: postActionUrl,
type: 'POST',
data: formData,
datatype: 'html',
success: function (result) {
var txt = "result: " + result.success + " Message: " + result.message;
alert(txt);
}
});
}
这是因为您只序列化表单数据一次。在自动保存功能内移动该行。