javascript - 通过ajax发送到数据库

标签 javascript jquery

我有一个 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>

该函数应该获取比赛的 ID(例如 1,2...)和状态(例如 1,2,3),分别表示松动、获胜和默认状态。 问题是我只能更新第一行数据。如果我尝试对另一行数据执行此操作,则将使用第一次调用的值。例如,如果我将第一行状态更新为获胜,如果我尝试更新第二行以使其松动,则它会更新为获胜。先前操作的状态。 我该如何解决这个问题?

最佳答案

你可以试试

        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 应该是唯一的,因此,如果您只有一个具有 id match-status 的元素,那没问题..但是如果您的 select s 具有相同的 id,您需要将 id="match-status" 更改为 class="match-status" 并更改 var status = jQuery('# match-status').val();var status = $(Element).val();

关于javascript - 通过ajax发送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52015378/

相关文章:

jquery - JQGrid 列中的文本框

javascript - 单击另一个按钮时如何在按钮上创建幻灯片效果

javascript - Redux-thunk 调度功能在 Laravel 上不起作用

javascript - 将加密浏览器添加到 Gatsby 项目

javascript - 用户如何在 session 期间调整 html 表格列宽

javascript - 如何替换链接名称文本

javascript - 当 AJAX 更改 URL 而不重新加载页面时,如何重新加载 Greasemonkey 脚本?

javascript - 如何在Jquery中找到一个div有一个widget?

javascript - 如何从 $(this).context 获取输入值

javascript - ajax调用后div重新加载错误