我有一个基于“SecID”变量填充动态表单元素的表单,该变量标识用户所在站点的哪个部分。
我正在使用经典ASP,使用JQuery& AJAX保存表单更改。到目前为止,这段代码运行得很好:
<form name="sampleForm" ID="sampleForm">
<input type="hidden" name="SecID" id="SecID" value=<%=SecID%>>
<input type="text" value="<%=rs.fields("Title")%>" name="Title" class="formJD">
<input type="text" value="<%=rs.fields("JobCode")%>" name="JobCode" class="formJD">
<select name="<%=TypeID%>-<%=RowID%>" class="<%=FormClass%>">
<option value="">Select</option>
<option value="1">Example 1</option>
<option value="2">Example 2</option>
</select>
<%'***more form elements taken out to be short****%>
</form>
<script>
function showValues() {
var str = $("#sampleForm").serialize();
$.ajax({
type: "POST",
url: "updateFormAJAX.asp",
data: str,
success: function(msg) {
// $('#autosavenotify').text(msg);
}
});
}
$(":checkbox, :radio").click(showValues);
$("select").change(showValues);
$("input").change(showValues);
showValues();
</script>
我将省略AJAX调用的ASP页面。这一切都可以在每次更改时更新整个表单。我遇到的问题是,因为我使用serialize()将元素传递给AJAX,所以每次更改表单元素时都会保存ENTIRE表单。这对于较小的页面是可以的,但是某些页面的形式可能很大,并且将表单保存20次以上会减慢速度。
我想要做的只是在更改单个表单元素而不是整个表单时保存它们。我尝试用这样的函数来做到这一点:
<script>
$(document).ready(function(){
$('select').live('change',function () {
var statusVal = $(this).val();
//alert(statusVal);
$.ajax({
type: "POST",
url: "saveStatus.asp",
data: "statusType=statusVal",
success: function(msg) {
// $('#autosavenotify').text(msg);
}
})
});
});
</script>
我也有这个工作,但我不确定如何将其他变量传递到我需要保存到数据库的AJAX更新页面。例如,在我上面发布的版本中,我能够传递“SecID”变量,因为我正在使用serialize(),它将发送所有内容。但是,如果我只想一次向单个表单元素发送更改,还包括“SecID”变量或其他变量,我将如何更改它以实现它?
感谢您的帮助!
答案 0 :(得分:0)
你可以尝试:
...
data: 'statusType=' + statusVal + '&otherKey=<%=otherVal%>',
...
答案 1 :(得分:0)
为什么复杂化?
如果您向表单添加保存按钮,则可以序列化并将其发布到服务器一次。
这不是在每次更改字段时将表单发布到服务器。