如何在函数

时间:2016-09-08 08:08:54

标签: android cordova

在这里,如果从服务器传入的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'); 
                        });
                    });
                }
            });
        }   
    });

3 个答案:

答案 0 :(得分:0)

公开该函数之外的变量简单 像这样

public yourVariable;

答案 1 :(得分:0)

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

这样可以为其分配值并在其他地方使用。

答案 2 :(得分: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();        
}

如果您有任何疑问,请与我们联系。