2017-03-13 32 views
0

经过数小时的命中和试用后,在查看各种帖子以获得帮助后,此代码终于奏效。但是我希望有人帮助我理解函数(i,dat),这意味着什么?这是我下面全码 -websql在循环,数据源中插入语句 - json

function get_assignedtasks_first_time(){ 
 
var jdata=$.getJSON("http://45.114.246.107/quicktask/webservice/admtask.php?entdt=&entusr=SAURABH&company=&taskno=&status=&priority=&primary=", function(data) { 
 

 
db.transaction(function (tx) { 
 

 
    $.each(data, function(i, dat) { 
 
       tx.executeSql('INSERT INTO tasks (sno, taskdesc) VALUES("'+data[i]['SNO']+'", "'+data[i]['TASKDESC']+'")'); 
 
      }); 
 
      alert("completed"); 
 

 
}); 
 
      }); 
 
}

回答

0

功能$.each发生在两个参数。第一个是正在迭代的数组,第二个是要为数组中的每个元素执行的回调函数。

对于数组中的每个元素,$.each将使用两个参数执行此回调函数。第一个参数(您定义为i)是当前元素的索引,第二个参数(dat)是您为每次迭代查看的实际元素。

对于您定义的函数,您需要从数组中的每个元素中提取'SNO'和'TASKDESC'属性。但是,它看起来像不是使用包含当前条目的dat参数,而是使用原始数组(使您的代码稍微复杂一点)。

实现的功能可能是这样的另一种方法:

function(index, element) { 

    // put these variables in quotes 
    var sno = "'" + element.SNO + "'"; 
    var taskdesc = "'" + element.TASKDESC + "'"; 

    // join these strings with commas 
    var values = [sno, taskdesc].join(','); 

    tx.executeSql("INSERT INTO TASKS (sno, taskdesk) VALUES(" + values + ")") 
    alert("inserted " + values); 

} 

在这种情况下,我们并不需要,因为我们使用的第二个参数使用索引的所有(元素上迭代) 。

+0

这看起来非常整齐,我会尝试这样做,你能给我一个这条线 - var sno =“'”+ element.SNO +“'”; //这是什么意思,2个引号和+之前和之后的单引号。对不起,我是一个初学者 – saurabh

+0

在将数据插入数据库之前,您需要用单引号或双引号包装字符串。 +符号只是将字符串组合在一起。在javascript中,如果你想给一个字符串添加一个引号,你需要用双引号(如果你添加一个单引号)来包装它,或者用单引号将它包裹起来(如果你在串)。 – Brian