2010-08-20 38 views
35

Tôi khá chắc chắn đây là một câu hỏi phổ biến, nhưng tôi khá mới với JS và đang gặp một số vấn đề với điều này.Tải nội dung tệp HTML vào Div [mà không cần sử dụng iframe]

Tôi muốn tải x.html vào một div có id "y" mà không sử dụng iframe. Tôi đã thử một vài thứ, tìm kiếm xung quanh, nhưng tôi không thể tìm được giải pháp tốt cho vấn đề của mình.

Tôi thích thứ gì đó trong JavaScript nếu có thể.

Xin cảm ơn trước, mọi người!

+0

Bạn có thể sử dụng jQuery không? –

+0

Nếu đó là cách duy nhất để làm điều đó, tôi đoán nó sẽ ổn thôi. Tôi đã không bao giờ được sử dụng jQuery mặc dù .. – MapWeb

+1

Nó không phải là cách * duy nhất *, nhưng nó tóm tắt đi hầu hết các phức tạp một vấn đề như thế này mang lại. Ngoài ra, hãy nhớ rằng vì lý do bảo mật bạn không thể tải HTML từ các trang web khác (tên miền khác nhau) với Javascript –

Trả lời

4

Tôi khuyên bạn nên tham gia vào một trong các thư viện JS ngoài kia. Chúng đảm bảo khả năng tương thích để bạn có thể bắt đầu và chạy rất nhanh. jQuery và DOJO đều thực sự tuyệt vời. Để làm được những gì bạn đang cố gắng để làm trong jQuery, ví dụ, nó sẽ đi một cái gì đó như thế này:

<script type="text/javascript" language="JavaScript"> 
$.ajax({ 
    url: "x.html", 
    context: document.body, 
    success: function(response) { 
     $("#yourDiv").html(response); 
    } 
}); 
</script> 
58

jQuery:

$("#y").load("x.html"); 
+13

jQuery rất tuyệt vời và làm mọi thứ. – rdlowrey

+2

Tại sao câu trả lời này không được đánh dấu là đã trả lời, đối với tôi, nó hoạt động như một sự quyến rũ! Điều này thật tuyệt vời khi chỉ cần jquery để tạo trang chủ động. – Edgar

+6

@ EdgarsŠturms Nó có thể hoạt động, và súc tích, nhưng nó không phải là câu trả lời đúng vì câu hỏi không yêu cầu giải pháp jQuery. – Matt

0

http://www.boutell.com/newfaq/creating/include.html

này sẽ giải thích làm thế nào để viết của bạn riêng clientsideinlcude nhưng jQuery là rất nhiều, A LOT dễ dàng hơn tùy chọn ... cộng với bạn sẽ đạt được nhiều hơn nữa bằng cách sử dụng jQuery anyways

69

Wow, từ tất cả các câu trả lời khuôn khổ quảng cáo y bạn có thể nghĩ rằng đây là một cái gì đó JavaScript đã làm cho vô cùng khó khăn. Nó không phải là thực sự.

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

Nếu bạn cần IE < 8 tương thích, làm đầu tiên này để mang lại những trình duyệt lên đến tốc độ:

if (!window.XMLHttpRequest && 'ActiveXObject' in window) { 
    window.XMLHttpRequest= function() { 
     return new ActiveXObject('MSXML2.XMLHttp'); 
    }; 
} 

Lưu ý rằng tải nội dung vào trang với kịch bản sẽ làm cho nội dung mà vô hình cho khách hàng mà không cần JavaScript có sẵn, chẳng hạn như công cụ tìm kiếm. Sử dụng cẩn thận và xem xét phía máy chủ bao gồm nếu tất cả những gì bạn muốn là đưa dữ liệu vào một tệp được chia sẻ chung.

+13

Đây là câu trả lời hay vì câu hỏi không phải về JQuery. Có một số trường hợp mà bạn * không thể * sử dụng JQuery hoặc một số khung công tác để thực hiện việc này. –

+0

Lạ, tôi nhận được một lỗi 'NS_ERROR_DOM_BAD_URI: Truy cập vào URI bị từ chối bị hạn chế ' – Costa

+3

@Costa: có vẻ như bạn đang cố gắng thực hiện một XMLHttpRequest trên nhiều trang. Đó là không được phép vì lý do bảo mật, trừ khi trang web mục tiêu chọn tham gia. – bobince

1
document.getElementById("id").innerHTML='<object type="text/html" data="x.html"></object>'; 
Các vấn đề liên quan