Jquery 在执行 SQL 之前等待 JSON 个对象的 return
Jquery wait for return of JSON object before executeSQL
在下面的函数中,我如何告诉 JS 在进行 sql 事务之前等待我的 ajax 调用的 return。
以下示例代码当前正确获取数据,但 sql 事务在 AJAX 调用填充我的 employees []
之前执行
我尝试在成功后放置 sql 操作,但出现以下错误
Uncaught DOMException: Failed to execute 'executeSql' on 'SQLTransaction': SQL execution is disallowed.
这是部分代码
var addSampleData = function (tx, employees) {
var employees = [];
$.ajax({
url: 'my-path-to-my-json-answer',
success: function (value, status) {
employees.push(value);
},
error: function (XMLHttpRequest, textStatus, exception) {
console.log("Connection with the server fail.\n" + textStatus + 'status is: ' + exception);
}
});
var l = employees.length;
var sql = "INSERT OR REPLACE INTO leaderboard " +
"(id, uFname, uLname, uRegion, uCountry, uScore) " +
"VALUES (?,?,?,?,?,?)";
var e;
for (var i = 0; i < l; i = i + 1) {
e = employees[i];
tx.executeSql(sql, [e.id, e.uFname, e.uLname, e.uRegion, e.uCountry, e.uScore],
function () {
console.log('INSERT success');
},
function (tx, error) {
console.log('INSERT error: ' + error.message);
});
}
}
欢迎提出任何改进该代码的建议。
这是因为 Ajax 调用是异步的,浏览器为 ajax 调用启动了一个单独的线程。为了在 ajax 调用完成后执行您的 SQL 查询,将您想要 SQL 查询代码的代码放在 ajax 的成功方法中,如下所示...
jQuery.ajax({
type:"post",
dataType:"json",
url: myAjax.ajaxurl,
data: {action: 'submit_data', info: info},
success: function(data) {
//do your SQL work here...
console.log('doing SQL work');
},
error: function(data) {
console.log('boo...boo...');
},
});
在下面的函数中,我如何告诉 JS 在进行 sql 事务之前等待我的 ajax 调用的 return。
以下示例代码当前正确获取数据,但 sql 事务在 AJAX 调用填充我的 employees []
我尝试在成功后放置 sql 操作,但出现以下错误
Uncaught DOMException: Failed to execute 'executeSql' on 'SQLTransaction': SQL execution is disallowed.
这是部分代码
var addSampleData = function (tx, employees) {
var employees = [];
$.ajax({
url: 'my-path-to-my-json-answer',
success: function (value, status) {
employees.push(value);
},
error: function (XMLHttpRequest, textStatus, exception) {
console.log("Connection with the server fail.\n" + textStatus + 'status is: ' + exception);
}
});
var l = employees.length;
var sql = "INSERT OR REPLACE INTO leaderboard " +
"(id, uFname, uLname, uRegion, uCountry, uScore) " +
"VALUES (?,?,?,?,?,?)";
var e;
for (var i = 0; i < l; i = i + 1) {
e = employees[i];
tx.executeSql(sql, [e.id, e.uFname, e.uLname, e.uRegion, e.uCountry, e.uScore],
function () {
console.log('INSERT success');
},
function (tx, error) {
console.log('INSERT error: ' + error.message);
});
}
}
欢迎提出任何改进该代码的建议。
这是因为 Ajax 调用是异步的,浏览器为 ajax 调用启动了一个单独的线程。为了在 ajax 调用完成后执行您的 SQL 查询,将您想要 SQL 查询代码的代码放在 ajax 的成功方法中,如下所示...
jQuery.ajax({
type:"post",
dataType:"json",
url: myAjax.ajaxurl,
data: {action: 'submit_data', info: info},
success: function(data) {
//do your SQL work here...
console.log('doing SQL work');
},
error: function(data) {
console.log('boo...boo...');
},
});