2016-09-08 6 views
-1

Здесь я не уверен, почему функция ошибки не работает, если ошибка C_id от сервера неверна. Я получаю C_id из базы данных сервера и передаю этот C_id на другой сервер в ajax-запрос.Как получить доступ к локальной переменной за пределами функции

$.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 отложили или просто позвоните ab() в ftr() ниже

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..it работал ... но у меня есть еще один вопрос. как обеспечить, чтобы данные, отправленные на сервере, были неправильными, поскольку я не могу напечатать сообщение об ошибке msg..code выше, PLZ обратитесь к – Sawan

+0

Если это сработало, примите это как ответ .... Также добавьте новый вопрос с подробным описанием для вашего другого проблема – Zeeshan

0

Обнародовать этот переменные за пределами функции простого как этого

public yourVariable; 
0

Вы также можете попробовать определение переменных за пределы функции, а затем передать его в качестве параметра функции.

Таким образом, ему может быть присвоено значение и использоваться в другом месте.

Смежные вопросы