我有一个页面,我必须每隔几秒保存一些数据[数据库]。这与gmail或stackoverflow每隔几秒保存一次草稿的方式类似。我正在使用jQuery Ajax来实现这一点。以下是我的阿贾克斯电话:使用Ajax每隔几秒保存一些数据[数据库]
问题:这是正确的方法吗?每隔几秒钟打开和关闭连接我都感到不舒服。
function ShowHtml() {
var SaveStoryForEditing = '<%= Page.ResolveUrl("~")%>Webservices/WebService.asmx/SaveStoryForEditing';
$('#savedata').html($('#InPlaceEdit').html());
$("#InPlaceEdit").find("textarea").each(function (idx) {
$("#savedata").find("textarea").eq(idx).text($(this).val());
});
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: SaveStoryForEditing,
dataType: 'json',
async: false,
data: "{'StoryEditId':" + $('#hfStoryEditID').val() + ",'AccountId':" + $('#hfAccID').val() + ",'StoryHtml':'" + $('#savedata').html() + "'}", // Page parameter to make sure we load new data
success: function (data) {
var myObject = eval('(' + data.d + ')');
$('#InPlaceEdit').effect("highlight", { color: "#ff0000" }, 1000);
$('#savedata').html('');
AutoSave();
},
error: function (result) {
AutoSave();
alert(JSON.stringify(result));
}
});
};
function AutoSave() {
setTimeout("ShowHtml()", 30000);
};
这是我从Web服务调用该函数:
Public Shared Function SaveStoryForEditing(ByVal StoryEditId As Integer, ByVal AccountId As Integer, ByVal StoryHtml As String) As Object
Dim db As SqlDatabase = Connection.Connection
Dim scalar As Object
Dim cmdIf As SqlCommand = CType(db.GetSqlStringCommand("UPDATE StoryEdit SET [email protected] WHERE [email protected] AND [email protected]"), SqlCommand)
db.AddInParameter(cmdIf, "AccountID", DbType.Int32, AccountId)
db.AddInParameter(cmdIf, "StoryEditID", DbType.Int32, StoryEditId)
db.AddInParameter(cmdIf, "StoryHtml", DbType.String, StoryHtml)
scalar = db.ExecuteNonQuery(cmdIf)
Return scalar
End Function
这是我的连接对象类:
Imports Microsoft.Practices.EnterpriseLibrary.Data.Sql
Imports System.Data.SqlClient
Public Class Connection
Public Shared Function Connection() As SqlDatabase
Dim db As SqlDatabase = New SqlDatabase(System.Configuration.ConfigurationManager.ConnectionStrings("TripNestConStr").ConnectionString)
Return db
End Function
End Class
你是对的,实际上我是动态构建这个表单并发现它很难跟踪更改。在不同的背景下,有什么办法可以进一步优化我的功能吗? – Monodeep
@Monodeep,所以你的检查机制也必须是动态的。:)我知道这并不容易,但是...如果你正在寻找代码优化,我建议你看看CodeReview(姊妹网站)那里的人们可以提供有价值的见解。恐怕我不擅长用VB.NET来提供任何有关你的代码的严肃建议,例如我不明白为什么在VB中你不打开/关闭你的连接:))(或者至少我在你的例子中看不到这个机制) – walther
感谢您的时间:)我打开/关闭我的连接在不同的功能,这是不是在这里。 – Monodeep