2012-08-03 49 views
0

我有一个按钮,它附加到站点的下拉菜单,并在下拉值属性是数字。我使用的是AJAX功能来运行使用从下拉值的数学方程式..这是我的代码:动态.ajax()数据变量与PHP

var data1 = $('#data1').val(); 
var data2 = $('#data2').val(); 
var data3 = $('#data3').val(); 


$.ajax({ 
    type: 'GET', 
    url: 'ajaxcalc.php', 
    data: { 
    data1: data1, 
    data2: data2, 
    data3: data3 
    }, 
    dataType: 'json', 
    cache: false, 
    success: function(data) { alert('yay!'); }) 
    }); 
    }, 
}); 

//show dropdowns code 
$('#data1').click(function() { 
var $d = $('<select name="data1" id="data1"><option selected="selected" value="null">Choose your data!</option><option value="5">Option 1</option><option value="1">Option 2</option><option value="14">Option 3</option></select><br/>').fadeIn().delay(1000); 
$('.data1').append($d); 
}); 

//html button code for append data1 drop down 
<button id="data1">Add Dropdown</button> 

我的问题进来时人追加相同的下拉菜单的2相同的id我无法检索两个变量......它只获得第一个下拉值!

我ajaxcalc.php文件

我有这样的检索变量:

$data1 = $_GET['data1']; 
$data2 = $_GET['data2']; 

我试图让别人追加DATA1下拉两次,并选择2个不同的值,但仍然将值传递给我的ajaxcalc.php文件通过.ajax()函数!有谁知道我能做到这一点?

+4

所以不要创建具有相同的ID元素。这只是错误 – zerkms 2012-08-03 02:32:19

+0

以及我有一个附加功能,吐出相同的ID下拉... – tcd 2012-08-03 02:34:38

+0

所以?元素**不应该**具有相同的ID。这是DOM要求的 – zerkms 2012-08-03 02:35:38

回答

1

在你的情况下,你没有“data2”或“data3”的id。你继续追加“data1”。当追加下拉菜单时,您需要使用ID增加数字。

//show dropdowns code 
var dropdownCount = 1; 
$('#data1').click(function() { 
    var $d = $('<select name="data' + dropdownCount + '" id="' + dropdownCount + '"><option selected="selected"   value="null">Choose your data!</option><option value="5">Option 1</option><option value="1">Option 2</option><option value="14">Option 3</option></select><br/>').fadeIn().delay(1000); 
    $('.data1').append($d); 
}); 

请尝试使用该代码代替您的下拉代码。

编辑

更好的解决方案是使用一类,而不是id秒。如果每个下拉菜单都有一个class,您可以将它们全部选中(无论添加了多少个)并循环显示以获取值。

var dropdowns = $(".dropdowns"); 
//Loop through them to get values and pass them to your ajax call 

EDIT2

这里是一个小提琴我一起通过展示如何可以添加多个下拉列表和传递数组回到你的PHP页面,而不是单个变量。

http://jsfiddle.net/JtUuN/

+0

,但我需要某人能够从1-99下拉选择任何位置的任何选项,我实际上是问是否有方法来动态更新.ajax()函数内的jQuery变量和数据 – tcd 2012-08-03 02:42:48

+1

这就是我的编辑解释。请勿在您的下拉列表中使用ID。改为使用班级。这样,无论创建多少个下拉列表都无关紧要,您可以使用类选择器来选择它们。 – 2012-08-03 02:44:41

+0

我会检查一下,非常感谢!如果它解决了,我会将它标记为答案! – tcd 2012-08-03 03:04:15