我有一个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);
}
});
});
答案 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太慢了!