我有一个页面,我必须每隔几秒保存一些数据 [到数据库中]。这类似于 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);
};
这是我从网络服务调用的函数:
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 StoryHtml=@StoryHtml WHERE AccountID=@AccountID AND StoryEditID=@StoryEditID"), 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