HTML
echo '<form id="f_'.$id.'" method="post">';
echo '<input type="hidden" name="re_ti" value="'.$ti.'">';
echo '</form>';
echo '<button id="rBtn" l="#f_'.$id.'" class="button_accept" onclick="document.getElementById(\'review\').style.display = \'block\';">Review</button>';
AJAX
$(document).ready(function(){
$('#rBtn').click(function() {
var log = $(this).attr("l");
alert(l);
$.ajax({
type:"post",
url:"php_parsers/review.php",
data: $(l).serialize(),
success: function(response){
$("#reviewMain").html(response);
}
});
$.ajax({
type:"post",
url:"php_parsers/comment.php",
data: $(l).serialize(),
success: function(response){
$("#reviewSub").html(response);
}
});
});
});
因此HTML代码与PHP一致,每个表单都有不同的ID
示例表单ID为#f_234324
(它是计数)。
使用while
回显表单,如果只有一个回显,则一切正常,但如果有多个表单被回显,则我的Ajax不起作用。
Ajax应该获得l
并使用l
将数据更改为我想要的论坛。
如果有人知道更好的解释方法,请告诉我。如果有一个表单,则会弹出警告,但如果有两个表单,则会弹出警告。
我错过了什么?
答案 0 :(得分:1)
我认为问题在于,您的文档中有多个rBtn
个ID,因为如果php中的while循环有多个按钮,那么您获得的不仅仅是一个身份rBtn
。您应该使用唯一的ID。我会在选择器中使用类名:
$(document).ready(function(){
$('.button_accept').click(function() {
var log = $(this).attr("l");
alert(l);
$.ajax({
type:"post",
url:"php_parsers/review.php",
data: $(l).serialize(),
success: function(response){
$("#reviewMain").html(response);
}
});
$.ajax({
type:"post",
url:"php_parsers/comment.php",
data: $(l).serialize(),
success: function(response){
$("#reviewSub").html(response);
}
});
});
});
因此,在具有类button_accept
的所有元素上设置click事件处理程序,$(this)
将在单击时返回单击的按钮。我希望这可以解决你的问题。
顺便说一下,您应该将l
属性命名为data-l
以编写有效的html5代码。按钮元素没有属性l
,命名空间data-*
命名您自己的(新)属性。