2012-01-18 68 views
0

使用jQuery 1.7.3

得到的只有一个页面的DOM结构我最近更换了电话$.load();$.get();在我的剧本之一,利用请求中止和其他很酷的功能 - 所以我要求一个正常的(本例中是php)html页面,而不是返回JSON或XML的文件。

但我注意到,您正在加载的页面上出现脚本错误 - 例如onError='myFunction(this);'内联脚本调用第1页上未定义的功能,但第2页上出现的功能可能会导致错误(在此例中为undefined function myFunction)第1页。我也看到图像也被要求。

我的使用案例是,我需要从新页面的一个值的数据,而不是整个事情,当然不是图像 - 有没有办法让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查询来获取我所需要的数据,然后在脚本中分析它,并生成标记的一些关切等等,但是在这个用例中可以说比这更有价值,特别是考虑到我也会复制代码。

关于内联脚本,我可以(并且有一个解决方法)在page1上定义函数以避免错误。

任何帮助表示赞赏

回答

0

我最终发现的最好方法是非常简单的 - 当您向页面发出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 } ?> 

这种方法是实现一种痛苦,但做这项工作,是不错的,高效的,当你有做各种额外的东西了非常大的搜索页面,但所有你想要的是结果的下一页。

1

你可以从你的选择中排除节点:

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

http://api.jquery.com/not/

+0

这基本上是什么$('#myDiv',data);确实。不管我是否从页面选择图像,问题是浏览器实际上试图加载它们。我看到你在想什么,但我会试一试:) – jammypeach 2012-01-18 12:55:43

+0

首先:我添加了'.find('*')',导致.not()对'# myDiv'。如果您没有输出响应,浏览器是否加载图像? – Armin 2012-01-18 13:03:36

+0

我说浏览器加载图像的原因是,我在控制台中获取404和403错误的占位符等,将加载该页面时返回这些错误。此外,我尝试了这一点,但没有看到行为上的任何变化 - 您的选择器虽然 – jammypeach 2012-01-18 16:09:52

1

您是否尝试过与$.ajax()做Ajax请求,并设置dataTypetexthttp://api.jquery.com/jQuery.ajax/

+0

坚韧不拔(以及很好的建议)。这看起来像它应该工作,但仍然看到加载page2后的图像额外的GET请求 - 我也试过在阅读你链接的文档 - 同样的结果后设置dataType为HTML。我想我可以忍受它,它看起来很浪费 – jammypeach 2012-01-18 16:43:30