2012-02-22 3 views
2

je suis dans l'application mobile. j'utiliser ajax appelle à recevoir des données de Whit webserver ce codeAppel jquery ajax exécuter la fonction après complète

   $.ajax({ 
        url: 'http://www.xxxxxxxxxxxxxxxx', 
        data: {name: 'Chad'}, 
        dataType: 'jsonp', 
        success: function(data){ 
         $.each(data.posts, function(i,post){ 
          $.mobile.notesdb.transaction(function(t) { 
          t.executeSql('INSERT into bill (barcode, buildingcode, buildingaddress, flatname, flatdescription, entryseason, period, amount, pastpayments, todaypayments, receiptno) VALUES (?,?,?,?,?,?,?,?,?,?,?);', 
           [post.Id, post.Code, post.Address, post.Name, post.Description, post.EntrySeason, post.Period, post.Revenue, post.PastPayments, post.todaypayments, post.receiptno], 
           //$.mobile.changePage('#page3', 'slide', false, true), 
           null); 
          });    
         }); 
        }, 
        complete: function(){test = 1;} 
       }); 

je veux la fonction complète à exécuter après que toutes les données insérées à SQLite ...

Comment puis-je faire ???

s'il vous plaît conseiller

+0

Vous devez récupérer un événement de sqlite, pas de votre appel AJAX. –

Répondre

2

Le rappel complete devrait être dans votre fonction executeSql. executeSql devrait accepter trois arguments:

var sqlString = 'INSERT into bill (barcode, buildingcode, buildingaddress, flatname, flatdescription, entryseason, period, amount, pastpayments, todaypayments, receiptno) VALUES (?,?,?,?,?,?,?,?,?,?,?);'; 
var sqlValues = [post.Id, post.Code, post.Address, post.Name, post.Description, post.EntrySeason, post.Period, post.Revenue, post.PastPayments, post.todaypayments, post.receiptno]; 
var callback = function(){ test = 1; } 
executeSql(sqlString, sqlValues, callback); 

Vous devez modifier votre fonction executeSql et faire accepter un troisième argument, et mettre fin à la fonction avec callback();. Sur une autre note, ne pas transmettre des requêtes SQL comme ceci un problème de sécurité? Comme, un majeur?

+0

est-il un moyen d'exécuter le rappel une fois ??? parce que la fonction de rappel exécutée pour chaque insert sqlite – kosbou

+0

Je ne vois pas comment, puisque votre SQL est exécuté de manière asynchrone. Vous pouvez compter le nombre de rappels renvoyés et exécuter une fonction lorsque le nombre de rappels renvoyés est égal au nombre de requêtes envoyées. –

Questions connexes