2016-09-08 86 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

您也可以嘗試定義函數的變量之外,然後將它作爲參數傳遞給函數。

通過這種方式,它可以被分配一個值並在其他地方使用。

相關問題