2011-12-06 11 views
12

Прямо сейчас у меня есть форма, в которой пользователь вводит информацию. Это чем обработанная функция bu jQuery ajax и установлена ​​в return false;, поэтому перезагрузка страницы не происходит после того, как пользователь отправит форму. Хотя мне нужно перезагрузить страницу, но если я удалю return false;, она обновит страницу перед успешным сообщением (это сообщение отображается после отправки пользователем данных).Обновить страницу после сообщения, 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; 

Так как я могу перезагрузить страницу после того, как <p> Your article was successfully added!</p> сообщение отображается, с небольшой задержкой говорят 2 - 3 секунды, так что пользователь может на самом деле читать сообщение.

ответ

22

Вы можете добавить задержку с помощью функции setTimeout(), такие as:

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

Для ваших нужд:

$.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

по какой-то причине он не делает Не работайте, может быть, из-за возврата ложного? – Ilja

3

ли это что-то вроде:

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

setTimeout('delayedRedirect()', 3000) 

setTimeout используется для задержки вызова функции переадресации, в этом случае вы можете перенаправить куда-то на новый URL-адрес (только в случае, если вам нужно, что тоже).

В противном случае используйте location.reload(), чтобы перезагрузить страницу.

2

ли вы имеете в виду что-то вроде: window.location.reload() в JavaScript

+0

по какой-либо причине он не работает, не может быть из-за возврата false? – Ilja

2

дать его с помощью

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

в вашем коде:

$.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

по какой-то причине он не работает, может быть, из-за возврата false? – Ilja

+0

Я попробовал этот код перенаправления здесь и его работу отлично .. – mithunsatheesh

+0

по какой-то причине мне нужно было добавить его до $ ("# st_message"). Htm ... и теперь он работает спасибо))) – Ilja

1

Используйте метод setTimeout, чтобы получить задержку и метод reload перезагрузить страницу. Обратите внимание на параметр true в вызове reload, чтобы убедиться, что страница действительно перезагружена, а не просто перекрашена из кеша.

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

по какой-то причине он не работает, может быть из-за возврата false? – Ilja

+0

Нет, это может быть проблемой, если вы попытаетесь перезагрузить страницу немедленно. Кроме того, изменение порядка кода, как вы отметили в другом комментарии, не имеет никакого значения. Возможно, опечатка? – 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

Использование тайм-аут является очень плохой идеей.

Смежные вопросы