【发布时间】:2012-01-30 09:55:36
【问题描述】:
我用下面的代码查询我的websql数据库,看看有没有记录。
如果找到记录,我会使用 ajax 请求将它们提交到 asp 页面,然后将表单信息推送到 sql server。
到目前为止一切都很好,但是我现在只想在 ajax 请求返回成功时从 WebSql 数据库中删除每条记录。
当它们嵌套这么大时,我终生无法正确理解 javascript 函数和范围(我现在只写 js/jquery 几个星期了)。
我知道我需要捕获我设置为变量 vID 的 ID,然后执行另一个 sql 语句来删除记录,该记录嵌套在我的 ajax 调用的成功标准中。我无法正确引用 vID,然后我不知道如何设置调用以基于此再次执行 sql。
function Web_SQL_Storage_Open_And_Check() {
if (window.openDatabase) {
var db = openDatabase("ER_Nonconformance", "1.0", "Non-conformance Report DB", 4 * 1024 * 1024); //creates our database if it does not exist at 4mb size
var db2 = db.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS tbllog (ID INTEGER PRIMARY KEY ASC AUTOINCREMENT, DteOccur datetime, Pdetected nvarchar(50), DeptRaisedBy int, DeptResp int, NCDescrip nvarchar(255), NCCause nvarchar(255), NCImmediateAct nvarchar(255), NCLocation nvarchar(100), PNumOrRef nvarchar(30), EventCat int, ReportedEmailAddy nvarchar(100), Location_Category int)");
tx.executeSql("SELECT * FROM tbllog", [], function(tx, result) {
if (result.rows.length > 0) {
alert("we need to submit")
for (var i = 0; i < result.rows.length; i++) {
//Submit values to the asp page using the below loop
var vID = (result.rows.item(i)['ID'])
var vPdetected = result.rows.item(i)['Pdetected']
var vDteOccur = result.rows.item(i)['DteOccur']
var vDeptRaisedBy = result.rows.item(i)['DeptRaisedBy']
var vDeptResp = result.rows.item(i)['DeptResp']
var vNCDescrip = result.rows.item(i)['NCDescrip']
var vNCCause = result.rows.item(i)['NCCause']
var vNCImmediateAct = result.rows.item(i)['NCImmediateAct']
var vNCLocation = result.rows.item(i)['NCLocation']
var vPNumOrRef = result.rows.item(i)['PNumOrRef']
var vEventCat = result.rows.item(i)['EventCat']
var vReportedEmailAddy = result.rows.item(i)['ReportedEmailAddy']
var vLocation_Category = result.rows.item(i)['Location_Category']
var request = $.ajax({
url: "untitled.asp",
type: "post",
data: {
DteOccur: vDteOccur,
Pdetected: vPdetected,
DeptRaisedBy: vDeptRaisedBy,
DeptResp: vDeptResp,
NCDescrip: vNCDescrip,
NCCause: vNCCause,
NCImmediateAct: vNCImmediateAct,
NCLocation: vNCLocation,
PNumOrRef: vPNumOrRef,
EventCat: vEventCat,
ReportedEmailAddy: vReportedEmailAddy,
Location_Category: vLocation_Category
},
dataType: "html"
}
);
request.done(function() { alert("done"); })
request.fail(function() { alert("error"); })
request.always(function() { alert("complete"); });
}
}
else {
//no records found so do nothing
alert("do nothing")
} //end of if statement
}, function(tx, error) {
alert("error retrieving")
})
//tx.executeSql();
});
}
}
【问题讨论】:
标签: javascript ajax function scope