2012-01-18 163 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