2013-09-26 22 views
3

У меня есть одна страница list.jsp со списком всех записей в таблице и одной кнопкой сверху, чтобы добавить новую запись.Как обновить родительскую страницу после закрытия всплывающего окна в javascript?

Я хочу открыть add.jsp как всплывающее окно. Это работает, но когда я закрываю всплывающее окно, как обновить list.jsp так, что он показывает недавно добавленный рекорд

Вот мой код, что я пытался ...

  1. list.jsp

    <html> 
    <head> 
    <script> 
        function popupwindow(url, title, w, h) { 
        var left = (screen.width/2)-(w/2); 
        var top = (screen.height/2)-(h/2); 
        popupWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 
        return popupWindow 
        } 
    </script> 
    </head> 
    <body> 
    <input type="button" value="Add new" id="add-btn" onclick="popupwindow('Addnew.jsp','Add new',600,400)"/> 
    <table> 
        // Here i am showing all records from database... 
    </table> 
    </body> 
    
  2. add.jsp

     <html> 
        <head> 
        <script type="text/javascript"> 
        $(document).ready(function(){ 
    
         $("#savebtn").click(function(e) { 
         $.ajax({ 
            type: "POST", 
            url: "RecordHandler", 
            data: dataString, 
            success: function(data){ 
             $('body').html(data); 
             $('#msg').html('New Record Added Successfully.') 
            } 
           }); 
         }); 
    
         </head> 
         <body> 
         <form method="POST"> 
         <table>    
         <tr> 
         <td>Folder Number</td> 
         <td><input type="text" name="folderno"/></td> 
        </tr> 
        <tr> 
         <td>Box Number <b style="color:red">*</b></td> 
         <td><input type="text" name="boxno"/></td> 
        </tr> 
        <tr> 
        <td colspan=2> 
         <input type="submit" value="Save" name="save" id="savebtn"/> 
        </td> 
        </tr> 
        </table> 
    </form> 
    
+0

увидеть этот ответ http://stackoverflow.com/questions/10792408/open-popup-and-refresh-parent-page-on-close-popup –

+0

спасибо Squirerl его работа ..... –

+0

приятно слышать :) –

ответ

5

Как из моего комментария от другого ответа вам просто нужно обработать window.onunload события и использовать window.opener свойства сказать страницу вызова для обновления.

2.add.jsp

<html> 
<head> 
    <script type="text/javascript"> 

     //ADDED START 
     window.onunload = refreshParent; 
     function refreshParent() { 
      window.opener.location.reload(); 
     } 
     //ADDED END 

     $(document).ready(function(){ 
      $("#savebtn").click(function(e) { 
       $.ajax({ 
        type: "POST", 
        url: "RecordHandler", 
        data: dataString, 
        success: function(data){ 
         $('body').html(data); 
         $('#msg').html('New Record Added Successfully.'); 
         window.timeout(CloseMe, 1000); <-- not sure on the syntax 
         but have a timeout which triggers an event 
         to close the form once a success has been handled. 
         Probably should do something incase of an error. 
        } 
       }); 

       return false; <-- this should stop the window from unloading. 
      }); 

     function CloseMe() 
     { 
      window.opener.location.reload(); 
      window.close(); 
     } 
    </head> 
+0

, но он не показывает «Успешно добавлена ​​новая запись». msg ... как пользователь узнает, что запись успешно добавлена? –

+0

witin 'функция щелчка ', которую вы указали для' savebtn', вы можете «вернуть false». , а затем еще одна функция, которая запускается в 'success', которая закрывает форму. Итак, он ждет успеха до закрытия –

+0

обновил мой ответ, чтобы попытаться продемонстрировать, что я попытался описать выше –

5

Чтобы перезагрузить текущий документ, вы можете использовать location.reload(true). Параметр forceGet по умолчанию false, поэтому вы его передаете как true, чтобы перезаписать его. В основном он используется для извлечения документа с сервера вместо его загрузки из кеша.

EDIT1: Если вы пытаетесь перезагрузить исходное окно всплывающего окна, как указано в комментариях к escaparello, вы должны позвонить window.opener.location.reload(). Кроме того, вы можете связать слушатель событий для когда всплывающие разгружает, следующий образом:

popupWindow.onunload = function() { 
    // This informs the user that the record has been added successfully 
    alert('The record has been inserted into the database!'); 

    window.opener.location.reload(); 
} 
+0

Я думаю, что главная проблема заключается в том, «как узнать, что всплывающее окно было закрыто», а не «как перезагрузить страницу» –

+0

Я использовал location.reload (true), но это не обновляющая страница ... –

+1

также любой желающий использовать location.reload() должен проверить это http://stackoverflow.com/questions/2405117/difference-between-window-location -href-window-location-href-and-window-location –

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