ajax调用删除方法后,页面不手动刷新,就一直显示那信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax调用删除方法后,页面不手动刷新,就一直显示那信息相关的知识,希望对你有一定的参考价值。

参考技术A 你需要再增加个AjaxMethod来获取当前的投票数
[Ajax.AjaxMethod()]
public string GetTickets()

//读取操作
return num;//num为投票数


.aspx中使用一个函数读取投票数并更新到页面
function UpdateTicket()
var n = WebForm_Food_FoodGame.GetTickets().value;
document.getElementById("显示投票数的Element").innerhtml=n;


那样在投票成功之后就可以调用一下这个函数来更新
alert("投票成功");
UpdateTicket();
参考技术B ajax调用删除成功返回不是有一个函数调用执行嘛,在该js函数删除该条数据在页面的显示... 参考技术C ajax调用删除成功返回的方法中添加 location.reload(); 参考技术D 对,你需要移除那条数据,或者自动刷新一下、

使用 fetch 后如何重新加载页面

【中文标题】使用 fetch 后如何重新加载页面【英文标题】:How to reload page after using fetch 【发布时间】:2021-07-31 14:46:18 【问题描述】:

想知道为什么我下面的代码不起作用。基本上我是从我的 url 中获取数据来删除一些东西。删除时,它应该刷新。但是它似乎不允许我这样做。但是如果我手动刷新页面,它的作用就是删除帖子。

当我使用 Ajax 方法时可以工作,但我不知道为什么。

获取方法

const deleteBTN = document.querySelectorAll('.deleteBtn');
const update = document.querySelectorAll('.postedNote');

console.log(deleteBTN);

for (let btn of deleteBTN) 
    btn.addEventListener('click', (e) => 
        console.log("Delete from front end");
        console.log(btn[btn])
        let id = e.target.dataset.btn;
        fetch('http://localhost:3000/api/notes' + '/' + id, 
            method: "DELETE",
        ).then(() => 
            Location: reload()
        )
    )

Ajax 方法

$(".deleteBtn").click((e) => 
    $.ajax(
        type: "DELETE",
        url: `http://localhost:3000/api/notes/$e.target.dataset.btn`,
        success: function () 
            console.log("delete success");
        ,
    ).done(
        setTimeout(() => 
            window.location.reload();
        , 500)
    );
);

【问题讨论】:

如果你也使用window.location.reload();而不是Location: reload()来获取fetch呢? 我已经尝试添加它,但它根本没有达到 .then() 方法 你真的需要重新加载吗?成功请求后,您可以通过操作 DOM 简单地删除元素。重新加载整个页面似乎是肮脏的解决方案。 【参考方案1】:

我认为您不应该在删除其中一个元素时尝试重新加载页面, 相反,如果响应显示已成功删除,我会检查响应状态并手动更新 DOM 以使已删除的元素消失。

【讨论】:

【参考方案2】:

我们可以使用 window.location.reload 重新加载,就像在 ajax 成功时所做的那样。

请在下面找到代码 sn-p

const deleteBTN = document.querySelectorAll('.deleteBtn');
const update = document.querySelectorAll('.postedNote');

console.log(deleteBTN);



for (let btn of deleteBTN) 
    btn.addEventListener('click', (e) => 
        console.log("Delete from front end");
        console.log(btn[btn])
        let id = e.target.dataset.btn;
        fetch('http://localhost:3000/api/notes' + '/' + id, 
            method: "DELETE",
        ).then(() => 
            window.location.reload();
        )
    )

此外,以下几点注意事项 当我们重新加载页面时,Ajax 的使用在这里被打败了。 要么

我们应该执行一些 DOM 操作来删除已删除的帖子 从页面

或者,

如果我们使用 React,我们可以将帖子绑定到状态,然后 在 API 成功调用时删除已删除的帖子,因此该组件是 重新渲染,我们不需要刷新页面。

【讨论】:

您好,感谢您的留言。我试过上面的方法。这是错误是得到“未捕获(承诺中)TypeError:无法获取”,ajax方法由于某种原因起作用。但 fetch 方法返回错误。但是,如果我刷新它会删除帖子 嗨,请尝试以下代码并了解反馈获取('localhost:3000/api/notes' + '/' + id, method: "DELETE", ).then((res) => res.json() ).then(res => window.location.reload()) 请放置一个catch块,看看rest调用是通过还是失败。 它返回了一个 TypeError: Failed to fetch message。 我相信后端会抛出这个错误,一旦 API 响应成功,它应该可以工作

以上是关于ajax调用删除方法后,页面不手动刷新,就一直显示那信息的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中,Ajax发送后刷新局部页面的方法

分页显示的时候如何让页面不刷新

JS页面 如何实现刷新指定DIV?

php怎么不刷新页面更新数据.

使用 fetch 后如何重新加载页面

ssm项目实现删除操作后如何使查询出来的数据页面自动刷新?