2011-12-06 11 views
12

Ngay bây giờ tôi có một biểu mẫu nơi người dùng nhập thông tin. Nó được xử lý bởi hàm bujjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjqqjqqqjqqqqqqqqhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh Mặc dù tôi cần tải lại trang nhưng nếu tôi xóa return false; trang sẽ làm mới trang trước khi thông báo thành công được hiển thị (thông báo này được hiển thị sau khi người dùng gửi dữ liệu).Tải lại trang sau khi thông báo được hiển thị, jQuery

 $.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
     $("#st_message").html("<p> Your article was successfully added!</p>"); 
     //I need to reload page after the above message is shown 
     } 
    }); 
    return false; 

Vậy làm thế nào tôi có thể tải lại trang sau khi được thông báo <p> Your article was successfully added!</p> được hiển thị, với một chút chậm trễ nói 2-3 giây, vì vậy người dùng thực sự có thể đọc tin nhắn.

Trả lời

22

Bạn có thể thêm một sự chậm trễ bằng setTimeout() chức năng, chẳng hạn như:

// This will reload the page after a delay of 3 seconds 
window.setTimeout(function(){location.reload()},3000) 

Đối với nhu cầu của bạn:

$.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
      $("#st_message").html("<p> Your article was successfully added!</p>"); 
      window.setTimeout(function(){location.reload()},3000) 
     } 
}); 
return false; 

Working Example

+0

vì một số lý do nó không 't làm việc, nó có thể là vì trở về sai? – Ilja

3

Làm điều đó với một cái gì đó như:

function delayedRedirect(){ 
    window.location = "/index.php" 
} 

setTimeout('delayedRedirect()', 3000) 

setTimeout được sử dụng để làm chậm chức năng chuyển hướng cuộc gọi, trong trường hợp này bạn có thể chuyển hướng nơi nào đó để một URL mới (chỉ trong trường hợp bạn cần điều đó quá).

Nếu không, hãy sử dụng location.reload() để tải lại trang.

2

Bạn có nghĩa là một cái gì đó như: window.location.reload() trong JavaScript

+0

vì một số lý do nó không hoạt động, có thể là do trả về false không? – Ilja

2

cho nó sử dụng

setTimeout("window.location='yourpage.php'",3000); 

trong mã của bạn:

$.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
     $("#st_message").html("<p> Your article was successfully added!</p>"); 
     setTimeout("window.location='yourpage.php'",3000);//reload after 3 sec. 
     } 
     }); 
return false; 
+0

vì lý do nào đó nó không hoạt động, nó có thể là do trả lại sai? – Ilja

+0

tôi đã thử rằng mã chuyển hướng ở đây và làm việc tốt của nó .. – mithunsatheesh

+0

vì một số lý do tôi cần phải thêm nó trước $ ("# st_message"). Htm ... và nó bây giờ hoạt động cảm ơn bạn))) – Ilja

1

Sử dụng phương pháp setTimeout để có được sự chậm trễ, và reload phương pháp để tải lại trang. Lưu ý thông số true trong cuộc gọi reload để đảm bảo rằng trang thực sự được tải lại và không chỉ được sơn lại từ bộ nhớ cache.

window.setTimeout(
    function(){ 
    location.reload(true) 
    }, 
    3000 
); 
+0

vì một số lý do nó không hoạt động, có thể là do trả về false? – Ilja

+0

Không, điều đó chỉ có thể là vấn đề nếu bạn cố gắng tải lại trang ngay lập tức. Ngoài ra, việc thay đổi thứ tự của mã như bạn đã lưu ý trong một nhận xét khác sẽ không tạo ra bất kỳ sự khác biệt nào. Có lẽ một lỗi đánh máy? – Guffa

1
$.ajax({ 
    type: "POST", 
    url: "scripts/process.php", 
    data: dataString, 
    success: function() { 
    var miliseconds = 2000; 

    $("#st_message").html("<p> Your article was successfully added!</p>"); 
    setTimeout("window.location=window.location", miliseconds); 
    //I need to reload page after the above message is shown 
    } 
}); 
1
<script type="text/javascript"> 
// 
//your action here 
// 
window.setTimeout(function(){self.parent.location="?list"},3000);//after 3 sec go to (?list or example.html page) 
return false; 
</script> 
1

Sử dụng thời gian chờ là một ý tưởng thực sự xấu.