2015-06-12 58 views
0

我在html頁面上使用jQuery將另一個頁面加載到div中,使用.ajax()。 第二頁有一個表格。當表單提交時,我想調用一個函數(位於初始頁面)。目前我得到這個「ReferenceError:getHistory沒有定義」(其中'getHistory是函數的名稱)。父母頁面上的jquery調用函數

主頁(縮小的空間) - 對象:單擊按鈕,出現表單,提交表單,從ajax調用更新歷史記錄。

<!DOCTYPE html> 
<html lang="en" > 
<head>...</head> 
<body> 

    <div id="msg"></div> 

    <input type="button" id="AddEvent" value="add" /> 

    <div id="addForm"></div> 

    <div id="history"></div> 

    <!-- script references --> 
    <script src="js/jquery.min.js" ></script> 
    <script src="js/bootstrap.min.js" ></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 

    <script> 
     $(document).ready(function() { 
      // Show form 
      $('#AddEvent').click(function() { 
       $('#addForm').hide(); 
       $('#addForm').load('addform.html', function(response, status, xhr) { 
        $('#addForm').slideDown(1000).fadeIn(3000); 
        if (status == 'error') { 
         var msg = 'Sorry but there was an error loading the form: '; 
         $('#msg').html(msg + xhr.status + ' ' + xhr.statusText); 
        } 
       }); 
      }); 

      // function to populate history 
      function getHistory() { 
       ...AJAX to populate history div... 
      } 

      // initial load on page load 
      getHistory(); 
     } 
    </script> 
</body> 

FORM PAGE:(減少空間)。

<form role="form" id="eventform" action="/eventHandeler" method="post" > 
    ... 
</form> 
<script> 
$(document).ready(function() { 

    $('#eventform').ajaxForm(function() { 

     alert("Thank you for add!"); 

     // ****** THIS IS WHERE I WANT TO RELOAD THE HISTORY...function on parent page 
     getHistory(); 

    }); 

}); 

回答

2

您已經創建了一個封閉範圍功能getHistory(DOM的準備處理程序中),所以它不會是封閉範圍之外訪問。如果你想讓它外部訪問,你需要聲明它由兩種調用方法共享AA範圍(在這種情況下,全球範圍內)

移動的方法來全球範圍內

$(document).ready(function() { 
    // Show form 
    $('#AddEvent').click(function() { 
     $('#addForm').hide(); 
     $('#addForm').load('addform.html', function (response, status, xhr) { 
      $('#addForm').slideDown(1000).fadeIn(3000); 
      if (status == 'error') { 
       var msg = 'Sorry but there was an error loading the form: '; 
       $('#msg').html(msg + xhr.status + ' ' + xhr.statusText); 
      } 
     }); 
    }); 


    // initial load on page load 
    getHistory(); 
}) 

//move it to global scope from the closure scope 
// function to populate history 
function getHistory() { 
    //...AJAX to populate history div... 
} 
1

我們可以使用父引用父框架,然後像下面我們可以執行該功能。 在這種情況下,它可以是:

parent.getHistory() 

但使用的功能像上面我們需要提醒的功能定義出來的文件準備好了,給它更多的範圍。然後通過上述方式我們可以訪問。

+0

將函數移動到全局範圍 - 「parent」。不需要。但是,謝謝。 – jpmyob

相關問題