如何在函数外部访问局部变量

沙旺

在这里,我不确定如果服务器发出的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'); 
                        });
                    });
                }
            });
        }   
    });
Zeeshan

首先,我必须告诉您,您正在尝试访问变量的情况,其client_id范围仅在该ftr()内。

因此,您需要全局定义它来访问它,还需要将它定义为一个数组,因为您一次获取多个值,因此需要推送它。您的代码将是这样的。

另外,您需要ab()ftr()完成执行调用该函数,因为ab()输出取决于结果。因此ftr(),您可以使用延迟的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();        
}

如果您有任何疑问,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章