【问题标题】:How can i update a field / post a form without redirecting or reloading a page?如何在不重定向或重新加载页面的情况下更新字段/发布表单?
【发布时间】:2021-01-09 06:44:09
【问题描述】:

我有以下代码来更新我数据库中的一个字段,该字段名为Flag,它是一个布尔字段。如何在不重新加载页面和重定向的情况下更新 flag 字段。我厌倦了ajax / Jquery,但它第一次工作然后在更新<li>列表中的下一个项目时停止,在下一个列表上单击它在地址栏中显示ID和标志值但不更新记录仅在更新第一个时有效列表中的项目。

 <form id="updateflag">
         @if (item.Flag == "Off")
           {
            <input name="ID" type="hidden" value="@item.ID" />  //value changes based on the selected list item
            <input name="Flag" type="hidden" value="true" />//value changes based on the selected list item
            <button type="submit" class="btn btn-primary">&nbsp; @(Localizer["Turn Flag On"]) // value changes based on the selected list item</button>
            }
           @if (item.Flag == "On")
             {
              <input name="ID" type="hidden" value="@item.ID" />//value changes based on the selected list item
              <input name="Flag" type="hidden" value="false" />//value changes based on the selected list item
              <button type="submit" class="btn btn-primary">&nbsp; @(Localizer["Turn Flag Off"])</button>//value changes based on the selected list item
             }
  </form>

//以上表单ID字段变化

我使用了以下 Ajax/Jquery,它运行一次,然后在下一次尝试时它向我显示了 url 中发布的数据,但没有更新字段

$('#updateflag').submit(function (e) {
    e.preventDefault();
    let Data = $(this).serialize();

    $.post({
        type: 'POST',
        url: "/Customer/updateFlag",
        data: Data,
        success: window.location.reload()
    })
})

在点击按钮时更新字段值而不重定向并立即显示更新结果的最佳方法是什么?

【问题讨论】:

  • 使用AJAX时为什么要重新加载页面?返回结果中的值以及 success: window.location.reload() 的位置,这是一种奇怪的语法,有 success: function(result) { /* update your field here */ }
  • 你的意思是你有很多id是updateflag的表单?如果您有多个表单,则 jquery 单击绑定仅适用于第一个表单。您可以尝试为所有表单设置一个类并在 jquery 中使用类选择器,如下所示:&lt;form id="updateflag" class="update"&gt;, jquery: $('.update').submit。
  • @BrandoZhang 是的,你完全正确,可以解决它

标签: javascript jquery asp.net ajax asp.net-core


【解决方案1】:

根据你的jquery代码,我发现你只是为updateflag绑定了click事件。

如果您有多个表单,Jquery 点击绑定只适用于第一个表单。

您可以尝试为所有表单设置一个类并在 jquery 中使用类选择器,如下所示:&lt;form id="updateflag" class="update"&gt;, jquery: $('.update').submit。

【讨论】:

  • 是的,谢谢,但无论如何不重新加载整个页面只是反映更改
  • 你的成功方法已经触发了 window.location.reload 方法。你能告诉我你为什么调用这个方法吗?
  • 没有 window.location.reload 我可以看到更新的值。它更新了数据库中的字段,但没有反映在视图中,这就是我添加 window.location.reload 的原因,在我看来,我想查看更新的值。我使用标签为&lt;div class="quarter"&gt; &lt;div id="Flag"&gt; &lt;label&gt; Flag&lt;/label&gt;&lt;br /&gt; @customer.Flag&lt;/div&gt; &lt;/div&gt;
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 2010-12-22
  • 2021-03-11
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多