Отправка в базу данных через ajax

У меня есть функция 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 для проигрыша, выигрыша и статуса по умолчанию соответственно. Проблема в том, что я могу обновить только первую строку данных. Если я попытаюсь сделать это с другой строкой данных, будут использованы значения из первого вызова. Например, если я обновляю статус первой строки, чтобы выиграть, если я пытаюсь обновить вторую строку, чтобы потерять, она обновляется, чтобы выиграть. Статус предыдущей операции. Как я могу это решить?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
33
1

Ответы 1

ты можешь попробовать

        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();

Другие вопросы по теме