我在循环中运行sql查询。只有当循环计数等于500时,查询才会运行。
表示E,g
$.ajax({
response:function(e){
// Here e.length will be unknown
for(var i in e){
if(q1cnt <= 500){
// do some appending
var k = k + 1 ;
if(q1cnt == 500){
tx.executeSql(k);
}
}
}
}
})
在上面的例子中我想要执行一个sql操作,如果计数达到500,我的问题是,如果前两个500的响应长度是1344,那就没关系,但我怎么能调用tx.executeSql(k);在433项结束时。
答案 0 :(得分:0)
我仍然感到困惑,为什么可能需要从JS为每个第500个对象执行SQL查询。但是,我可能知道如何实现这一目标。
看起来你正在使它变得复杂,而它可以在没有额外的计数器,旗帜等的情况下解决。
这是通过Ajax请求获取值的循环
然后,它为每第500个数据项和最后一个数据项执行tx.executeSql
。
$.ajax({
response: function(e)
{
for (var i = 0; i < e.length; i++)
{
if (i % 500 === 0 || i === e.length - 1)
{
tx.executeSql(i);
}
}
}
});
您提供了一个非常奇怪的Ajax调用代码部分。如果它是'不同'的AJAX,那就没关系。但是,谈到jQuery AJAX,语法应如下:
$.ajax({
// options
}).done(function(e)
{
for (var i = 0; i < e.length; i++)
{
if (i % 500 === 0 || i === e.length - 1)
{
tx.executeSql(i);
}
}
}
});
答案 1 :(得分:0)
注意:我不知道您所提供的对象中response
属性是什么$.ajax
;它是not in the standard options。但我认为你使用它是有原因的,也许是一些插件。如果没有,请在下面将response
更改为success
。
你已经说e.length
将是“未知的”。我假设你的意思是“未知”,而不是undefined
,而e
实际上是一个数组。如果那是真的:
$.ajax({
response:function(e){
var i;
// Here e.length will be unknown
for (i = 0; i < e.length; ++i) {
if (i <= 500) {
// do some appending
if (i === 500) {
tx.executeSql(i);
}
}
}
}
});
如果不为真而且e
是非数组对象,则要注意通过ES5,对象属性没有已定义的顺序,所以{ {1}}可能会按照您不期望的顺序访问它们。 (In ES6, they will have an order.)
有一点需要注意:
for-in