2016-09-08 54 views
-1

在这里,我不确定为什么错误函数不起作用,如果从服务器来的C_id不正确。我从服务器数据库中获取C_id,并在ajax请求中将该C_id传递给其他服务器。如何访问函数外的局部变量

$.ajax 
    ({ 
     url: "http://proserve.ekspeservices.com/client.php", 
     type: "GET", 
     datatype: "json", 
     data: {type: 'login', id: C_id},// getting C_id from server, but here if C_id is incorrect error function is not working 
     ContentType: "application/json", 
     error: function() 
     { 
      navigator.notification.alert('inCorrect Key'); 
     }, 
     success: function(res) 
     { 

      var simpleJson = JSON.parse(res); 

      myDB.transaction(function (txe1) 
      { 
       for (var i = 0; i < simpleJson.User.length; i++) 
       { 
        var Cli_id= simpleJson.User[i].id; 
        myDB.transaction(function (txe) 
        { 
         txe.executeSql('CREATE TABLE Client_data(Mobile integer , C_id integer, U_id integer , name text , ip integer)'); 

        }); 

        myDB.transaction(function (txe1) 
        { 

         var data_ins = 'INSERT INTO Client_data (Mobile,C_id,U_id) VALUES (?,?,?)'; 
         txe1.executeSql(data_ins, [p,C_id,U_id] 
         ,function(tx, result) 
         { 
          navigator.notification.alert('Inserted' , onSignup, 'Info', 'ok'); 

         }, 
         function(error) 
         { 
          navigator.notification.alert('Already Registered'); 
         }); 
        }); 
       } 
      }); 
     } 
    }); 
+0

如果您有任何进一步的问题,请发一个新帖子,因为这将帮助我们了解问题 – Zeeshan

回答

0

我必须先告诉你,你正试图访问你的案例中的变量client_id,它的作用域仅在ftr()范围内。

所以你需要全局定义它来访问它,你也需要定义它作为一个数组,因为你一次获得多个值,所以你需要推入它。 你的代码将会是这样的。

你也需要调用ab()功能ftr()结束之后执行的ab()输出取决于ftr() result.So,你可以用jQuery去推迟或干脆内ftr()调用ab()如下

var client_id = []; 
function ftr() 
{ 
    myDB.transaction(function(transaction) 
    { 
     transaction.executeSql('SELECT * FROM User_data', [], function (tx, results) 
     { 

     var len = results.rows.length; 
     for (var i=0; i<len; i++) 
     {  
      var emp = results.rows.item(i); 
      client_id.push({ 
       id: emp.C_id,     
      });     
     } 
    }, null); 
    }); 
    ab(); 
} 

function ab(){ 
    console.log(client_id); 
} 

function onDeviceReady() 
{ 
    myDB = window.sqlitePlugin.openDatabase({name: "mydb.db", location: 'default'}); 

    ftr();   
} 

设我知道你是否有任何疑问。

+0

thaknx ..它的工作......但我还有一个问题。如何确保在服务器上发送的数据是不正确的,因为我无法打印错误味精......代码更新上面,请参阅 – Sawan

+0

如果有效接受它作为答案....还添加新的问题与详细说明你的另一个问题 – Zeeshan

0

张扬,函数的变量外简单 这样

public yourVariable; 
0

您也可以尝试定义函数的变量之外,然后将它作为参数传递给函数。

通过这种方式,它可以被分配一个值并在其他地方使用。

相关问题