2013-02-21 24 views
11

Có thể tải một trang từ một trang web bên ngoài không?Trang tải ngoài của jQuery

Tôi cố gắng để hiển thị lên một trang duy nhất nhưng dường như không thể làm cho nó hoạt

$("#response").load("http://domain.com", function(response, status, xhr) { 
    if (status == "error") { 
     var msg = "Sorry but there was an error: "; 
     alert(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

Trợ giúp sẽ được rất nhiều đánh giá cao

+1

Có, đó là có thể, nhưng bạn sẽ cần 1 dòng PHP :) –

+0

Hãy xem ở đây - http://en.wikipedia.org/ wiki/Cross-origin_resource_sharing và tại đây http://msdn.microsoft.com/en-us/library/windows/apps/hh767443.aspx – Bakudan

+0

Nếu bạn chỉ cần nguồn cấp dữ liệu RSS và bạn không ngại dựa vào Google, bạn có thể sử dụng [ jquery-feeds] (https://github.com/camagu/jquery-feeds/). – guaka

Trả lời

19

Bạn đang chạy vào một chính sách tên miền chéo vấn đề nguyên nhân AJAX (vì lý do bảo mật) sẽ không cho phép bạn lấy nội dung từ một trang không nằm trên cùng một tên miền.

Để thoát khỏi nó và hoàn thành nhiệm vụ của bạn:
bạn cần một file PHP bạn có thể gọi grabber.php chỉ với dòng này của PHP:

<?php echo file_get_contents($_GET['url']); ?> 

Thần bên trong html của bạn (hoặc bất kỳ tập tin chỉ làm như :)

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <meta charset=utf-8 /> 
    <title>test</title> 
</head> 
<body> 

    <div id="response"></div> 

</body> 

<script> 
$(function(){ 
    var contentURI= 'http://domain.com #element'; // URL TO GRAB + # of any desired element // if needed :) 
    $('#response').load('grabber.php?url='+ contentURI); 
}); 
</script> 

</html> 

Tại sao tính năng này hoạt động?

  • bây giờ, AJAX đang gửi một yêu cầu GET đơn giản để trang grabber.php,
  • grabber.php lặp nội dung mong muốn
  • nay là nội dung đã bật (server) tên miền của bạn!
  • và AJAX là hạnh phúc để phục vụ bạn :)
+1

điều này thật tuyệt. Một vấn đề mặc dù. Tôi nhận thấy nhiều trang web mất đường dẫn tuyệt đối của họ một khi kéo nó. Bạn có biết bất kỳ mẹo nào để kéo trang và giữ nguyên trang đó không? – andehlu

+1

@andehlu Bạn có thể thêm nội dung đã tải vào iframe, điều này sẽ giữ đường dẫn theo thứ tự. –

+0

@WessamElMahdy depents nếu bạn chỉ muốn chiêm ngưỡng trang được tải hoặc bạn muốn thực sự làm một số nội dung với các yếu tố được tải .... –

0

Bạn đang cố gắng để tải một trang trên một tên miền khác nhau?

Nếu có, thì có vẻ như bạn có một chính sách cross-domain trên đường ...

Các vấn đề liên quan