2012-01-11 75 views
3

我有以下代码:成功jQuery,重新加载页面,然后追加?

$.ajax({ 
     type: 'GET', 
     url: 'edit_slides.php', 
     data: { user_id: user_id }, 
     success: function() { 
      location.reload(); 
      $('#messageContent').append('<p>success</p>'); 
     } 
    }); 

会发生什么现在的问题是,它追加然后所以它失去了消息重新加载真正的快。

现在,我可以取出重新加载,它会追加,但为了让我的更改生效,需要重新加载页面。

还有什么我可以做的吗?我想在重新加载页面后显示成功消息。

谢谢!

回答

5

location.reload()将重新加载您的页面,这会向您的服务器创建一个新请求,然后浏览器加载响应。您可以为消息的查询字符串添加一个参数,例如

$.ajax({ 
     type: 'GET', 
     url: 'edit_slides.php', 
     data: { user_id: user_id }, 
     success: function() { 
      window.location = "?message=success"; 
     } 
    }); 

然后在服务器端代码中,如果参数存在,则可以显示消息。在ASP.NET MVC,它应该是这样的:

@if(Request["message"] == "success") 
{ 
    <p>success</p> 
} 

如果你没有服务器端脚本可以做,也可以parse the querystring with javascript

+0

完美,这应该很好!感谢您的帮助:) – Drew 2012-01-11 21:55:14

1

在重新加载页面之前,您可能会有一些延迟。试试这个

$.ajax({ 
     type: 'GET', 
     url: 'edit_slides.php', 
     data: { user_id: user_id }, 
     success: function() { 
      $('#messageContent').append('<p>success</p>'); 
      setTimeout(function(){ 
       location.reload(); 
      }, 500); 
     } 
    }); 
+1

500毫秒不会真的给用户足够的时间来阅读消息。 – doogle 2012-01-11 21:54:28

1

它寄给你的位置,但在URL中的散列指示成功:

$.ajax({ 
    type: 'GET', 
    url: 'edit_slides.php', 
    data: { user_id: user_id }, 
    success: function() { 
     window.location = window.location + "#success"; 
    } 
}); 

现在在页面加载时,检查哈希:

$(document).ready(function(){ 
    if(window.location.hash) { 
     $("#messageContent").append("<p>success</p>"); 
    }