发送全局变量

时间:2011-08-13 19:51:40

标签: php javascript mysql html css

我有一个Javascript,可以将用户选择的信息转发到外部PHP文件,并返回信息。在下面的代码中,您可以看到它通过POST将{'report':report}发送到该文件。这很好。

基本上我需要添加另一个要发送的变量。它被称为'id',但它在另一个函数中。有没有办法让该变量全局,然后将其合并,以便它在我的代码片段中发送? (以及何时清除全局变量?)我也可以通过'url'属性发送它,并在我的PHP中使用GET ...只是不确定如何实现。

$('#adminSelectReport a').live("click", function () {
    //Get id from clicked link:
    var report = $(this).attr('id');

    $.ajax({
        type: 'POST',
        url: 'getReportInfo.php',
        data: {
            'report': report
        },
        success: function (msg) {
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminReportInfo').html(msg);
            $('#adminReportInfo').fadeIn(400);
        }
    });
});

更新:这是另一个代码段,它将“id”发送到另一个页面,获取信息。但是,我需要保留此ID,并将其用于原始代码。

$('#adminSelectCompany a').click(function() {
    //Get id from clicked link:
    var id = $(this).attr('id');

    $.ajax({
        type: 'POST',
        url: 'getReports.php',
        data: {'id': id},
        success: function(msg){
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminSelectReport').html(msg);
            $('#adminSelectReport').fadeIn(400);
           $('#adminReportInfo').fadeOut(300);

        }
});
    });

4 个答案:

答案 0 :(得分:2)

听起来他们通过链接选择公司,然后他们通过其他链接选择报告,您需要记住选择了哪家公司。

为了避免全局变量,我可能只是在选定的Company链接中添加一个类,然后通过所选类获取该元素,并获取其ID。如果需要,您也可以使用该类进行样式化。

var companies = $('#adminSelectCompany a');

companies.click(function () {

      // remove class from previously selected, and add to new one
    companies.filter('.selected').removeClass('selected');
    $(this).addClass('selected');

    $.ajax({
        type: 'POST',
        url: 'getReports.php',
        data: {
            'id': this.id
        },
        success: function (msg) {
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminSelectReport').html(msg)
                                   .fadeIn(400);
            $('#adminReportInfo').fadeOut(300);

        }
    });
});
$('#adminSelectReport a').live("click", function () {

    $.ajax({
        type: 'POST',
        url: 'getReportInfo.php',
        data: {
            'report': this.id,
            'company': $('.selected')[0].id
        },
        success: function (msg) {
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminReportInfo').html(msg);
            $('#adminReportInfo').fadeIn(400);
        }
    });
});

答案 1 :(得分:1)

您可以通过将值指定为名为window的JavaScripts“global”命名空间的属性来实现此目的。只需将要设为全局的ID分配给window.my_id,然后在点击回调中引用它。

注意:如果您在另一个函数中设置全局变量,请记住在将使用该变量的函数中检查它是否存在,即:var my_id = null; if (window.my_id != undefined) { my_id = window.my_id; }

这是一个实现:

$('#adminSelectReport a').live("click", function () {
    //Get id from clicked link:
    var report = $(this).attr('id');
    var company = window.report_company_id != undefined ? window.report_company_id : null;

    $.ajax({
        type: 'POST',
        url: 'getReportInfo.php',
        data: {
            'report': report,
            'company': company
        },
        success: function (msg) {
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminReportInfo').html(msg);
            $('#adminReportInfo').fadeIn(400);
        }
    });
});

$('#adminSelectCompany a').click(function() {
    //Get id from clicked link:
    var id = $(this).attr('id');

    window.report_company_id = id;

    $.ajax({
        type: 'POST',
        url: 'getReports.php',
        data: {'id': id},
        success: function(msg){
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#adminSelectReport').html(msg);
            $('#adminSelectReport').fadeIn(400);
           $('#adminReportInfo').fadeOut(300);

        }
});
    });

最后,如果可能的话,我会建议不要使用全局变量,或者至少通过在对象中包装常用函数/目的并使用项目名称或其他东西为名称加前缀来最小化使用。

答案 2 :(得分:0)

更改

data: { 'report': report },

data{ 'report': report, 'id': YOUR ID },

答案 3 :(得分:0)

为什么不像这样发送第二个变量:

 data: {'report': report, 'id': your_id },

编辑:arf太慢了!