2015-10-08 2 views
0

Есть ли способ, которым я могу запустить функцию, а затем позвонить window.location.reload(), чтобы обновить страницу? В настоящее время, когда я делаю это, страница обновляется, но функция не работает.Обновить страницу после того, как функция была вызвана

function postComment() { 
    var name; 
    if (document.getElementById("yourName").value == "") { 
     name = "(Anonymous)"; 
    } else { 
     name = document.getElementById("yourName").value; 
    } 
    var uri = "http://tgg.tcs.com/AP/Open/Service.svc/comment?name=" + name; 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", uri, true); 
    xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8") 

    xhr.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) { 
     alert(xhr.responseText); 
    } 
    } 
    xhr.send(JSON.stringify(document.getElementById("comment").value)); 

} 
+1

Конечно, но вам нужно показать нам, что делает эта функция и как вы звоните им обоим. Если это ajax, это асинхронно, и вы бы прервали ajax, если не правильно вызвали последовательность. – charlietfl

+0

В основном, что я делаю, размещаю комментарий с использованием 'XMLHttpRequest()', который, как я считаю, асинхронен ... – M0rty

+0

, что и есть то, что я подозреваемый ... 'ajax' является общим термином для' XMLHttpRequest'. Нужно показать нам свой код – charlietfl

ответ

0

Вы должны использовать обратный вызов

function yourFunction(arg, callback) { 
    doSomeStuff(arg); 
    callback(); 
} 

yourFunction('argument', window.location.reload); 

Если функция soSomeStuff является асинхронной, вы должны сделать

function yourFunction(arg, callback) { 
    doSomeStuff(arg, callback); 
} 

yourFunction('argument', window.location.reload); 

также, если вы обновите страницу, вы будете обновлять скрипты также, так что это зависит от того, что делает ваша функция, вам может понадобиться файл cookie, если данные, которые генерирует функция, должны быть постоянными

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