gpt4 book ai didi

javascript - 使用 Ajax 将消息状态从未读更新为已读 - MVC

转载 作者:行者123 更新时间:2023-12-03 01:24:34 32 4
gpt4 key购买 nike

我正在尝试将每条消息的状态从未读更新为已读,并且当我单击列表中第一条消息的按钮时更新状态将起作用,但是当我单击列表中第二条或第三条消息的按钮时更新状态不起作用。谁能帮助我或为我指明正确的方向!

预先感谢:)

查看:

 <div class="content">
@{ int i = 0;}
foreach (var item in Model.Comment_Lists.GroupBy(l => l.MSG).Select(g => .First())) {
if (item.se == "Kunde")
{
<div class="bs-callout bs-callout-success">
<div class="col-xs-3 text-right">
<button data-toggle="collapse" data-target="#ShowMSG_@i" id="btnChangestu" class="btn btn-sm btn-success btn-icon"></button></div>
<span class="text-muted"><small> @item.Date.ToString("dd/MMMM/yyy")</small></span><br />
<span class="text-muted"><small> @item.MSGType</small></span>
<input type="hidden" name="IDMSG" id="IDMSG" value="@item.id" />
<input type="hidden" name="ChangeStu" id="ChangeStu" value="Read Message" />
<div class="collapse" id="ShowMSG_@i">
<p><span>@item.MSG </span></p>
</div>
</div>
}
i++;
}
</div>

JavaScript:

<script>

$(document).ready(function () {
$("#btnChangestu").click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/Account/UpdateMSGStatus",
data: {
IDMSG: $("#IDMSG").val(),
ChangeStu: $("#ChangeStu").val()
},
dataType: 'json',
success: function (result) {
if (!$.trim(result)) {
alert("What follows is blank: ");
}
else {
result.ID = IDMSG;
result.MSGType = ChangeStu;
console.log("Send");
}
},
error: function () {
console.log('something went wrong - debug it!');
}
})
});
});
</script>

Controller :

public JsonResult UpdateMSGStatus(int? IDMSG , string ChangeStu)
{
var u = db.Besked.Where(a => a.ID == IDMSG).FirstOrDefault();
if (u != null)
{
u.MSGType = ChangeStu;
u.ID = IDMSG;
db.SaveChanges();
}
return Json(u, JsonRequestBehavior.AllowGet);
}

最佳答案

重复的 id 属性是无效的 html,并且您的 jQuery 选择器(IDMSG: $("#IDMSG").val() 等)将仅选择第一个具有该 id 的元素。

在这种情况下没有理由使用隐藏输入。相反,将值作为 data 属性添加,然后在 .click() 事件中读取,并使用按钮的 class 名称而不是一个id

注意,我只包含了 IDMSG,而不包含 ChangeStu,因为您已对该值进行硬编码

<button data-id="@item.id" class="btn btn-sm btn-success btn-icon edit" data-toggle="collapse" data-target="#ShowMSG_@i></button>

然后脚本就变成了

$('.edit.).click(function (e) {
e.preventDefault();

// read the value
var id = $(this).data('id');

$.ajax({
type: "POST",
url: '@Url.Action("UpdateMSGStatus", "Account"), // don't hard code urls
data: {
IDMSG: id,
ChangeStu: 'Read Message'
},
dataType: 'json',
success: function (result) {

关于javascript - 使用 Ajax 将消息状态从未读更新为已读 - MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51610787/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com