У меня есть функция js для обновления базы данных в соответствии со значениями из выбранных полей ввода. Это функция javascript:
function getStatusAction()
{
var matchId = $(this).attr('match-id');
var status = jQuery('#match-status').val();
jQuery.ajax({
url:'../core/match_stat.php',
type:'POST',
data:{matchId:matchId,status:status},
success: function(data){
//alert("Ok");
},
error: function(){
alert("Error..");
},
});
}
jQuery('select[name = "match-status"]').change(getStatusAction);
Часть HTML:
<tr>
<td>
<select class = "input" name = "match-status" match-id = "<?=$ActiveMatch['id'];?>" id = "match-status">
<option value = "3" <?= (($ActiveMatch['status'] == '3')?'selected':'')?>> </option>
<option value = "1" <?= (($ActiveMatch['status'] == '1')?'selected':'');?> >won</option>
<option value = "2" <?= (($ActiveMatch['status'] == '2')?'selected':'');?> >lost</option>
</select>
</td>
</tr>
Функция должна получить идентификатор совпадения, например 1,2 ... и статус, например, 1,2,3 для проигрыша, выигрыша и статуса по умолчанию соответственно. Проблема в том, что я могу обновить только первую строку данных. Если я попытаюсь сделать это с другой строкой данных, будут использованы значения из первого вызова. Например, если я обновляю статус первой строки, чтобы выиграть, если я пытаюсь обновить вторую строку, чтобы потерять, она обновляется, чтобы выиграть. Статус предыдущей операции. Как я могу это решить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


ты можешь попробовать
function getStatusAction(Element) //<< add parameter here
{
var matchId = $(Element).attr('match-id'); // <<< use it here
var status = jQuery('#match-status').val();
jQuery.ajax({
url:'../core/match_stat.php',
type:'POST',
data:{matchId:matchId,status:status},
success: function(data){
//alert("Ok");
},
error: function(){
alert("Error..");
},
});
}
jQuery('select[name = "match-status"]').on('change' , function(){
getStatusAction(this); // << use the function here
});
Примечание: id должен быть уникальным, поэтому, если у вас есть только один элемент с идентификатором match-status, все в порядке .. но если ваши select имеют тот же идентификатор, вам нужно изменить id = "match-status" на class = "match-status" и изменить var status = jQuery('#match-status').val(); на var status = $(Element).val();