2012-06-14 23 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

相关问题