2012-06-14 25 views
2

這裏是我的代碼:使用AJAX發送表單:是HTTP響應的DOM和數據加載嗎?

<script> 

    function loadPage() { 

     function sendFormHelper(callback) { 
      var url = "/same-as-current-url"; 
      var serializedForm = $('#form').serialize(); 
      $.post(url, serializedForm, function(data) { 
       callback(data); 
      }); 
     } 

     $('#form').off('submit').on('submit', function() { 
      sendForm(function(data) { 
       var mainResultCount = $(data).find('#main-result-count'); 
       var mainList = $(data).find('#main-list'); 
       $('#main-result-count').html($(mainResultCount).html()); 
       $('#main-list').html($(mainList).html()); 
       loadPage(); 
      }); 
      return false; 
     }); 

    } 

    $(function() { 
     loadPage(); 
    }); 

</script> 

<form id="form"> 
    <!-- some stuff --> 
</form> 

<div id="main-result-count"> 
    <!-- some stuff that can change --> 
</div> 

<div id="main-list"> 
    <!-- some stuff that can change --> 
</div> 

正如你所看到的,而不是重新加載時提交表單的頁面,我抓住了事件,並使用AJAX發送。返回的數據是一個完整的HTML頁面,與用戶看到的頁面幾乎一樣。在那個頁面中,我用可能改變的數據更新當前的佈局。

我在頁面上其他幾個JS腳本,是相當長運行,並很像圖片,CSS,菜單等佈局數據做所有這些數據和DOM也當獲得AJAX請求的響應時加載,即使該內容沒有被顯示,或者是那種僅在瀏覽器解析時加載的東西,然後停留一種大字符串

我無法找到我應該執行找到我自己:(

回答

3

沒有其他的東西了答案,當你這樣做將不會加載什麼樣的測試。 ajax請求只會獲取標記本身。它不會引入外部腳本,運行腳本等。只有瀏覽器加載HTML會話才能做到這一點。

你可以用像Firebug這樣的工具進行調查來驗證我在這裏是否正確。

繼續在您提出請求的同時觀看Firebug的網絡I/O。您會注意到沒有JavaScript/css資源正在被加載......只是來自servlet的標記。

希望這會有所幫助。

+0

謝謝你!你的回答很棒,不僅因爲它很清楚,而且因爲那是我希望的那個'')'' – sp00m

相關問題