【问题标题】:refresh page after jquery ajaxjquery ajax后刷新页面
【发布时间】:2013-08-10 11:47:52
【问题描述】:

我正在尝试在 jQuery AJAX 调用后刷新页面。在传输所有数据之前,页面似乎正在刷新(仅有时)。谁能通过下面的这个 sn-p 看出原因。我在成功函数中有刷新代码所以我很困惑。

我尝试添加async = false,但似乎也不起作用。

function sendRating(rating, reload_on_return) {

$.ajax({
    type: "POST",
    dataType: 'json',
    url: window.url_root + cid + "/",
    data: {
        "rating": rating.r2 / 100.0
    },
    success: function(data) {
        if (data.hasOwnProperty('success')) {
            console.log("data was sent!");

            if (reload_on_return) {
                    location.reload();

            }

        }
    },
    error: function() {
        console.log("Data didn't get sent!!");
    }
})

【问题讨论】:

  • 为什么不直接从您的 POST 中返回您需要在页面上更新的数据,或者调用一个 GET...回发只是让用户感到沮丧。
  • 您有日志要显示吗?是什么让您说并非所有数据都没有传输?
  • 这看起来是正确的。是否可能是其他代码导致了刷新,或者刷新实际上是在数据返回之后发生的?
  • 如何调用 sendRating?是在表单上提交吗?
  • @Jonah 该页面正在刷新,但它应该从服务器获取新数据,但这并不总是发生。 (但它会发生一段时间)

标签: javascript jquery ajax refresh


【解决方案1】:

您可以执行 setTimeout,使其在执行刷新之前等待片刻。

function sendRating(rating, reload_on_return) {

$.ajax({
    type: "POST",
    dataType: 'json',
    url: window.url_root + cid + "/",
    async: false,
    data: {
        "rating": rating.r2 / 100.0
    },
    success: function(data) {
        if (data.hasOwnProperty('success')) {
            console.log("data was sent!");

            if (reload_on_return) {
                setTimeout(
                  function() 
                  {
                     location.reload();
                  }, 0001);    
            }

        }
    },
    error: function() {
        console.log("Data didn't get sent!!");
    }
})

【讨论】:

  • 刷新页面后是否有调用新函数的方法。
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 2011-12-12
  • 2017-02-27
  • 2012-05-22
相关资源
最近更新 更多