也许这是一个奇怪的问题。我有很多按钮传递值与jquery。他们非常相似。所以我试着将它们与数字增加结合起来。
的index.php
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
for (var i = 0; i <5; i++){
$('.click'+i).click(function(){
$.ajax({
url: "data.php",
dataType: "html",
type: 'POST',
data: "data"+i+"="+i,
success: function(data){
$("#result"+i).html(data);
}
});
});
}
});
</script>
<a class="click1">aaa</a>
<a class="click2">bbb</a>
<a class="click3">ccc</a>
<a class="click4">ddd</a>
<a class="click5">eee</a>
<?php
for ($i=1; $i<=5; $i++){
echo '<div id="result'.$i.'"></div>';
}
?>
但是$_POST['data'.$i]
是一个意想不到的T_ECHO,所以如何编写以便我不会在data.php中重新开始工作
data.php
<?php
for ($i=1; $i<=5; $i++){
$_POST['data'.$i]{
echo $_POST['data'.$i];
//some stuff, most are similer, less code diferent use if else for $_POST['data1'] - $_POST['data5']
}
}
?>
答案 0 :(得分:2)
编辑:oops,这不是原始海报关注的修复,而是该代码将展示的另一个问题(我认为这是OP的问题)。我将此保留给后人。
这似乎表明它与JS闭包有一个共同的问题。假设你有这个JavaScript代码。
for (var i=1; i<5; i++) {
$('.click'+i).click(function() {
alert("Clicked " + i);
});
}
你可能期待:
$(".click1").click(function() { alert("Clicked 1"); });
$(".click2").click(function() { alert("Clicked 2"); });
$(".click3").click(function() { alert("Clicked 3"); });
$(".click4").click(function() { alert("Clicked 4"); });
$(".click5").click(function() { alert("Clicked 5"); });
实际上,这是:
$(".click1").click(function() { alert("Clicked 6"); });
$(".click2").click(function() { alert("Clicked 6"); });
$(".click3").click(function() { alert("Clicked 6"); });
$(".click4").click(function() { alert("Clicked 6"); });
$(".click5").click(function() { alert("Clicked 6"); });
//
// Notice that they're all "6" --^
...因为click
事件中的所有内容都使用i
的相同实例,该实例在循环结束时变为6。
此版本将为每次迭代创建一个新的变量范围,它将i
的值“烘焙”到新创建的函数中。
for (var i=0; i<5; i++) {
$('.click'+i).click((function(i) {
return (function() {
alert("Clicked " + i);
});
})(i));
}
这是一个相当困难的概念。谷歌周围有类似“迭代关闭javascript”的东西,以找到更多有关正在发生的事情的深入解释。
这个不太优雅,但更容易理解。
for (var i=0; i<5; i++) {
// Store the 'i' in the element itself...
$('.click'+i).data('index', i);
// ...then retrieve it later
$('.click'+i).click(function () {
alert("Clicked " + $(this).data('index'));
});
}
这个使用jQuery的i
方法将.data
的值存储在元素本身中。您可以使用i
。
$(this).data('index')
答案 1 :(得分:0)
for ($i=1; $i<=5; $i++){
echo $_POST['data'.$i];
}
没问题
此外,还可以使用data[]
或data[5]
作为字段名称
它将在数组 $_POST['data']
答案 2 :(得分:-1)
如果你这样给予
for ($i=1; $i<=5; $i++)
{
echo $_POST['data'.$i];
}//it seams like $_POST['data'1];
所以试试
for ($i=1; $i<=5; $i++)
{
echo $_POST["data$i"];
}