2013-06-21 37 views
0

我有兩個叫index.html的 & video.html HTML文件如何從一個html文件通過Ajax獲取特定的DIV ID

video.html持有編碼,如:

<div id="video"> 
<iframe src="http://www.youtube.com/embed/tJFUqjsBGU4?html5=1" width=500 height=500></iframe> 
</div> 

我想從index.html的video.html頁面抓取上述代碼

我不能使用任何back-如php或.net

有沒有辦法使用Ajax?

+0

雅,你可以使用Ajax肯定...讓我問你,你嘗試過什麼? –

+0

AJAX實際上需要一些「後端」編碼;) – abimelex

+0

可以共享代碼嗎? –

回答

1

嘗試......

$.ajax({ 
url: 'video.html', 
success: function(data) { 
    mitem=$(data).filter('#video'); 
    $(selector).html(mitem); //then put the video element into an html selector that is on your page. 
} 
}); 
+0

謝謝@Blachawk。我只是添加了$(「#wrapper」)。html(mitem)來從外部頁面獲取HTML。 –

+0

歡迎您。樂於幫助。是的,這也是我的意思!這是我的一個忽視。它現在更新。 – blackhawk

1

當然,發送一個ajax調用。

$.ajax({ 
url: 'video.html', 
success: function(data) { 
    data=$(data).find('div#video'); 
    //do something 

} 
}); 
1

是的,這是ajax的完美用例。當您向video.html頁面發出$.ajax()請求時,您可以將響應類似於對待現有DOM的方式處理。

例如,你會通過在以下方式指定URI開始請求:

$.ajax({ 
    url: 'video.html' 
}) 

你要確保請求成功。幸運的是jQuery將您處理該問題與.done回調:

$.ajax({ 
    url: "video.html", 
}).done(function (data) {}); 

現在它只是一個類似於你使用任何其他jQuery對象的方式的方式使用data對象的問題。我會推薦.find()方法。

$.ajax({ 
    url: "video.html", 
}).done(function (data) { 

    $(data).find('#video')); 
    } 
}); 
+0

感謝您的一步一步解釋 –

0

沒有測試過,但是應該是這東西similair:https://stackoverflow.com/a/3535356/1059828

var xhr= new XMLHttpRequest(); 
xhr.open('GET', 'index.html', true); 
xhr.onreadystatechange= function() { 
    if (this.readyState!==4) return; 
    if (this.status!==200) return; // or whatever error handling you want 
    document.getElementsByTagName('html').innerHTML= this.responseText; 
}; 
xhr.send(); 
1

既然你提到爬,我假設有多個頁面的可能性。以下代碼從一個url數組中加載頁面,並將成功加載存儲到結果中。它在每個負載上遞減remainingUrls(這對於更新進度條可能很有用)(completesuccesserror之後調用),並且可以在處理所有頁面後調用方法(!remainingUrls)

如果這是矯枉過正,只需使用$.ajax部分並用video.html替換myUrls[i]即可。我僅指定了type,因爲我遇到了另一個腳本將默認類型的ajax更改爲POST的情況。如果你正在加載像php或aspx這樣的動態頁面,那麼如果你打算在每個會話中多次調用這個屬性,cache屬性也可能會有所幫助。

var myUrls = ['video1.html', 'video2.html', 'fail.html'], 
     results = [], 
     remainingUrls; 


    $(document).ready(function() { 
     remainingUrls = myUrls.length; 
     for (var i = 0, il = myUrls.length; i < il; i++) { 
      $.ajax({ 
       url: myUrls[i], 
       type: 'get', // somebody might override ajax defaults 
       cache: 'false', // only if you're getting dynamic pages 
       success: function (data) { 
        console.log('success'); 
        results.push(data); 
       }, 
       error: function() { 
        console.log('fail'); 
       }, 
       complete: function() { 
        remainingUrls--; 
        if (!remainingUrls) { 
         // handle completed crawl 
         console.log('done'); 
        } 
       } 
      }); 
     } 
    }); 
相關問題