我正在开发一个项目,其中包含用户之间具有实时更新的讨论论坛。
每条消息都有一个“积极”和“消极”按钮。单击按钮时,我想存储消息的
id
。
相反,我的代码当前返回之前保存的最后一条消息的
id
。
`var myVar = setInterval(LoadData, 2000);
http_request = new XMLHttpRequest();
function LoadData(){
$.ajax({
url: 'view.php',
type: "POST",
dataType: 'json',
success: function(data) {
$('#MyTable div').empty();
for (var i=0; i<data.length; i++) {
var commentId = data[i].iddisc;
if(data[i].parent_comment == 0){
var date = new Date(data[i].datePubli);
var hourCycle = date.toLocaleString('es-ES', {hourCycle: 'h23' });
//In the next line is the development of the positive button
var row = $('<div class="info-box"><img src="./css/escudos/' + data[i].equipo + '.png" width="25px" height="25px" /><p>' + data[i].username + '</p><p id="date-p"> '+ hourCycle +'</p></div><div class="text-box"><p>' + data[i].post + '</p><div class="posneg"><form name="formpositivo" method="post"><input type="hidden" class="form-posi" name="posCommentid" value="' + commentId + '"><input type="button" id="positivo" name="positivo" class="suma" value="+"></form></div></div>');
$('#record').append(row);
}
}
},
error: function(jqXHR, textStatus, errorThrown){
alert('Error: ' + textStatus + ' - ' + errorThrown);
}
}); }`
`//Paso data
$(document).ready(function() {
$(document).on('click', '#positivo', function() {
var posi = document.forms["formpositivo"]["posCommentid"].value;
$.ajax({
url: "positivo.php",
type: "POST",
data: {
posi: posi,
},
cache: false,
success: function(dataResult){
var dataResult = JSON.parse(dataResult);
if(dataResult.statusCode==300){
alert(posi);
}
}
});
});
});`
文档视图
`include './database.php';
$data = array();
$sql = "SELECT *, discussion.id as iddisc, users.id as usersid FROM discussion INNER JOIN users ON discussion.id_user=users.id ORDER BY discussion.id desc";
$result = $conn->query($sql);
while($row = $result->fetch()){
array_push($data, $row);
array_push($data);
}
echo json_encode($data);
$conn = null;
exit();`
如何更改此代码,以便当我单击相应的按钮时,返回所选消息的
id
的值?
正如我在评论中提到的,出现问题是因为您对 HTML 页面内的多个元素使用相同的 id,这是不推荐的。要解决此问题,您可以将 id
positivo
转换为类,或者可以为可以附加事件处理程序的输入元素提供任何类。
所以你的循环代码就变成了。
var row = $('<div class="info-box"><img src="./css/escudos/' + data[i].equipo + '.png" width="25px" height="25px" /><p>' + data[i].username + '</p><p id="date-p"> ' + hourCycle + '</p></div><div class="text-box"><p>' + data[i].post + '</p><div class="posneg"><form name="formpositivo" method="post"><input type="hidden" class="form-posi" name="posCommentid" value="' + commentId + '"><input type="button" class="positivo" name="positivo" class="suma" value="+"></form></div></div>');
$('#record').append(row);
请注意,我已将 id
positivo
更改为 class positivo
。
现在您可以附加事件处理程序,如下所示
$(document).ready(function() {
$(document).on('click', '.positivo', function() {
var posi = $(this).parent().find('[name="posCommentid"]').val();
$.ajax({
url: "positivo.php",
type: "POST",
data: {
posi: posi,
},
cache: false,
success: function(dataResult){
var dataResult = JSON.parse(dataResult);
if(dataResult.statusCode==300){
alert(posi);
}
}
});
});
});