大家好我尝试使用php和ajax创建类似按钮,所以编写此代码但只是在第一个循环中工作
<?php header('Cache-Control: no-cache'); ?>
<script>
$(document).ready(
function(){
$("#like").click(function(){
$.ajax({
type: "POST",
url: "<?php echo ADDRESS ;?>thank.php",
data: "like="+$("#like").val(),
success: function(result){
$("#result").html(result);
}
});
});
}
);
</script>
<?php
foreach ($this->value['posts'] as $post){
echo $post[1] . $post[0] .$post[2] . $post[3] . '</br>';
echo '<div id="result"></div>';
}
?>
我认为问题在于我的#like,重复和jquery不知道哪一个是我们的div
答案 0 :(得分:0)
好的,有人回答了我的问题,但我不知道为什么删除:O
他或她写的任何方式
$(this)
谢谢!
你的代码没有用,但帮我修复那个问题就在我的按钮值!所有按钮都返回第一个循环的值,所以我将js代码更改为此
<script>
$(document).ready(
function(){
$(".like").click(function(){
var spdiv = ".result" + $(this).val();
$.ajax({
type: "POST",
url: "<?php echo ADDRESS ;?>thank.php",
data: "like="+$(this).val(),
success: function(result){
$(spdiv).html(result);
}
});
});
}
);
</script>
我使用class而不是id。
答案 1 :(得分:0)
ID是标识符 - 意味着它们必须是唯一的!你的脚本也很杂乱,我想你没有提到页面上有很多像按钮一样的对吧?
试试这个PHP代码:
foreach ($this->value['posts'] as $index=>$post) {
echo '<div class="comments">';
echo $post[1] . $post[0] .$post[2] . $post[3] . '</br>';
echo '<button class="like" data-id="<?php echo $index; ?>">LIKE</button>';
echo '<div class="result"></div>';
echo '</div>';
}
这个javascript:
$(document).ready(function(e) {
$("div.comments").on("click", "button.like", function(e) {
$.ajax({
type: "post",
url: "<?php echo ADDRESS ;?>thank.php",
data: {
like: $(this).attr("data-id")
},
success: function(data, textStatus, jqXHR) {
$(this).siblings(".result").html(data);
}
});
});
上面的脚本会向具有类buttons
的所有like
添加一个事件监听器。 $(this)
将引用like按钮,$(this).siblings(".result")
将获得结果div,它是like按钮(!)的直接兄弟,这意味着它们都位于同一个<div class="comments">
中。
我改变了你接近DOM元素的方式。我还在LIKE按钮中添加了一个新标识符,所以不要忘记更改此data-id
以满足您的需求!