如何使用jQuery$.get()仅获取页面的DOM结构

如何使用jQuery$.get()仅获取页面的DOM结构,dom,jquery,Dom,Jquery,使用jquery1.7.3 我最近更换了$.load;用$.get打电话;在我的一个脚本中,我利用了请求中止和其他一些很酷的特性,所以我请求的是一个普通的php(在本例中是html页面),而不是一个返回JSON或XML的文件 但是我注意到您正在加载的页面上有一个脚本错误,例如onError='myFunctionthis;'调用在第1页上未定义但在第2页上存在的函数的内联脚本可能会在本例中引发错误,即在第1页上未定义的函数myFunction。我还看到图像也被要求 我的用例是,我需要从新页面获得

使用jquery1.7.3

我最近更换了$.load;用$.get打电话;在我的一个脚本中,我利用了请求中止和其他一些很酷的特性,所以我请求的是一个普通的php(在本例中是html页面),而不是一个返回JSON或XML的文件

但是我注意到您正在加载的页面上有一个脚本错误,例如onError='myFunctionthis;'调用在第1页上未定义但在第2页上存在的函数的内联脚本可能会在本例中引发错误,即在第1页上未定义的函数myFunction。我还看到图像也被要求

我的用例是,我需要从新页面获得一个div值的数据,而不是整个页面,当然也不是图像-有没有办法让jQuery只请求标记而不“跟踪”图像链接,也不尝试运行任何内联脚本

例如:

Page1:
$.get('page2', {someData:123}, function(data){
    var myDiv = $('#myDiv', data); //get the div I want from the response

    //but at this point the browser has run the inline 
    //scripts and requested the images :(
    //do something with the (very expensive) data

    $('body').append(myDiv);
});

Page2:
<div id='myDiv'>
  <!-- some dynamic data that changes over time -->
</div>
有人担心我是否应该编写另一个可以用JSON查询的文件来获取所需的数据,然后在脚本中解析它并生成标记,等等,但在这个用例中,这将是远远超出其价值的麻烦,特别是考虑到我也将复制代码

关于内联脚本,作为一种解决方法,我可以并且已经在第1页定义函数以避免错误


任何帮助都可以从选择器中排除节点:

var myDiv = $(data).find('#myDiv').find('*').not('img, script');

您是否尝试过使用$.ajax执行ajax请求并将数据类型设置为text

我最终发现,实现这一点的最佳方法非常简单——当您向页面发出AJAX请求时,发送一个额外的参数,阻止页面输出您不需要的数据

Page1:
$.get('page2', {someData:123, ajax:true}, function(data){
    var myDiv = $('#myDiv', data); //get the div I want from the response
    $('body').append(myDiv);
});

Page2:
<?php if (isset($_GET['ajax'])) { ?>
  <div id='myDiv'>
    <!-- some dynamic data that changes over time -->
  </div>
  <?php exit(); ?>
<?php } else { ?>
  //show the page as normal
<?php } ?>

这种方法很难实现,但它可以完成任务,而且当你有一个非常大的搜索页面,可以做各种额外的事情,但是你想要的只是下一页的结果时,它是很好和有效的

这就是$'myDiv',data;做无论我是否从页面中选择图像,问题是浏览器实际上试图加载它们。我知道你在想什么,我还是要试试看:首先,我已经添加了.find'*',因为.not对myDiv没有任何影响。如果您没有输出响应,浏览器是否正在加载图像?我之所以说浏览器加载图像,是因为控制台中的占位符等出现404和403错误,这将在加载该页面时返回这些错误。此外,我尝试了这个方法,但没有看到行为上的任何变化-您的选择器也可以工作-向页面发出请求就是它的作用。我可以在firebug的网络面板中看到对.swf和图像文件的请求。然而,没有脚本或css文件-内联脚本仍然可以执行。对于韧性和良好的建议+1。这看起来应该是可行的,但在加载page2后仍然看到额外的GET图像请求-在阅读链接的文档后,我还尝试将dataType设置为html-结果相同。我想我可以接受,这似乎太浪费了