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