Tôi làm cách nào để có được HTML của bên ngoài bằng cách sử dụng jquery?nhận html của url bên ngoài trong jquery
Trả lời
Câu trả lời ngắn gọn là bạn không thể, vì yêu cầu AJAX được giới hạn ở cùng một miền (phụ) và cổng theo số Same Origin Policy.
Các hạn chế tương tự áp dụng cho các yếu tố iframe
: Bạn không thể tạo iframe
trỏ đến trang bên ngoài và lấy HTML từ đó.
Cách thông thường là sử dụng tập lệnh phía máy chủ (được viết bằng PHP) hoạt động như một proxy: Nó tìm nạp nội dung của trang web bên ngoài và phân phát lại cho JavaScript. Nó sẽ phải chạy trên cùng một tên miền với trang. Rõ ràng, bằng cách sử dụng giải pháp này, các tham chiếu tương đối với URL, hình ảnh, biểu định kiểu và như vậy (ví dụ: ../images/image.gif
) sẽ không còn hoạt động nữa, vì chúng nằm ngoài ngữ cảnh trên trang của bạn. Các trang liên quan đến trang web của bạn sẽ được hiển thị trên trang web của bạn. Cho dù đó là một vấn đề trong tình huống của bạn là không thể nói. Một cách giải quyết khác có thể là sử dụng <base>
tag.
Trên biểu mẫu đơn giản nhất - Bạn không thể.
Bạn bị ràng buộc với same origin policy.
Bạn cần jquery $.get
http://api.jquery.com/jQuery.get/
Ví dụ: Thông báo ra các kết quả từ yêu cầu test.cgi với một tải trọng bổ sung dữ liệu (HTML hoặc XML, tùy thuộc vào những gì đã được trả lại).
$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
Chỉnh sửa: điều này chỉ hoạt động nếu trang của bạn nằm trên cùng một tên miền.
Không thể: HTML của iframe' sẽ không thể truy cập được vào JavaScript mẹ do Chính sách xuất xứ giống nhau –
vì vậy sau đó có không có giải pháp nào cả :) – Stefanvds
Bạn có thể sử dụng $ .ajax hoặc $ .get để thực hiện cuộc gọi đến URL trên tên miền của riêng bạn và sau đó sử dụng bất kỳ ngôn ngữ phía máy chủ nào bạn đang sử dụng để truy xuất HTML và sau đó trả lại.
Đó là hai yêu cầu HTTP thay vì một yêu cầu nhưng nó sẽ khắc phục được sự cố của bạn.
Bạn cũng có thể lưu trữ HTML của trang bên ngoài trong mã phụ trợ để yêu cầu từ Javascript không phải lúc nào cũng dẫn đến hai yêu cầu HTTP - tất nhiên phụ thuộc vào tần suất HTML bạn muốn lấy sẽ thay đổi.
Một bước ngoặt nhỏ ở trên sẽ là có tác vụ nền chạy trên máy chủ của bạn truy xuất HTMl bên ngoài sau mỗi giây X và lưu cục bộ. Các yêu cầu đối với miền của bạn từ JS của bạn chỉ cần nhận bản sao mới nhất từ máy chủ của bạn. Điều đó có nghĩa là yêu cầu JS của bạn không bị chậm lại bằng cách đợi một yêu cầu HTTP bên ngoài khác.
Tất cả các trình duyệt phổ biến không cho phép các cuộc gọi Javasript truy cập bất kỳ Trang nào có miền phụ (phụ) khác do Chính sách xuất xứ giống nhau. Cách duy nhất để làm việc xung quanh đó là thiết lập một số loại "proxy" trên máy chủ của riêng bạn (ví dụ: một tập lệnh php) chạy dưới cùng một miền, lấy thông tin bạn muốn từ nguồn thứ ba và in chúng ra.
Bạn có thể thêm ngôn ngữ PHP hoặc bất kỳ ngôn ngữ nào khác của máy chủ vào trang web có thể hoạt động như một proxy cho tập lệnh của bạn để tìm nạp html trang.
Sau đó, bạn có thể gọi proxy phía máy chủ của mình với url bằng cách sử dụng Ajax sẽ trả lại cho bạn HTMl của trang đó.
- 1. Làm thế nào để gọi url bên ngoài trong jquery?
- 2. PHP readfile() của URL bên ngoài
- 3. Jquery tải Một phần của HTML ngoài
- 4. Làm thế nào để gọi hàm bên ngoài bên trong mã jquery từ html?
- 5. Làm cách nào để nhận dữ liệu JSON từ một URL bên ngoài?
- 6. đọc nội dung của thẻ script bên ngoài với jquery
- 7. URL tuyệt đối (bên ngoài) với Html.ActionLink
- 8. AVAudioPlayer có URL bên ngoài là * .m4p
- 9. Yêu cầu Facebook 2.0, cách thay đổi url nút "Chấp nhận" thành url bên ngoài facebook?
- 10. Tìm nạp biểu mẫu Dữ liệu Bên ngoài URL bên ngoài
- 11. jquery thêm tập tin html bên ngoài vào trang của tôi
- 12. Cách lấy URL cơ sở của trang web bên ngoài
- 13. Cách mở tệp bên ngoài từ HTML
- 14. Nhận Html từ Url trong ASP.NET MVC
- 15. Bạn có thể đặt nhận xét html bên ngoài các thẻ <html> không?
- 16. Nhận HTML Nguyên bản của Nút trong JQuery
- 17. Lỗi khi tải URL bên ngoài trong Phonegap 2.5
- 18. tải jQuery-Mẫu từ tệp bên ngoài?
- 19. AndroidView có cần quyền để mở URL bên ngoài không?
- 20. Chọn html bên trong một selector JQuery
- 21. jQuery Droppable: thả bên ngoài div?
- 22. Nhận văn bản bên ngoài một thẻ và bên
- 23. Nhiều tệp bên ngoài để ghi đè url trong web.config
- 24. Liên kết đến một URL bên ngoài trong Javadoc?
- 25. API bên ngoài GET() yêu cầu sử dụng jQuery
- 26. Tạo liên kết URL bên ngoài với JasperReports
- 27. jquery - nhận đường dẫn url?
- 28. Nhận URL hành động bên trong lớp MVC4 .NET
- 29. Rendering HTML bên trong textarea
- 30. jquery, tên miền, nhận URL
Chúng ta có thể làm được. Hãy thử điều này: http://crossorigin.me/ –
Đây là một blog giống nhau: https://blog.codepen.io/2015/07/10/crossorigin-me/ –
@KushalJayswal chính xác là loại "máy chủ kịch bản phụ phục vụ như một proxy "mà tôi đã đề cập. Nó đi kèm với vô số vấn đề, một trong số đó được minh họa bởi trang web hiện đang ngoại tuyến, có lẽ do tải nặng. Đối với bất kỳ loại hình sử dụng chuyên nghiệp nào, dịch vụ đó rất xa "chúng tôi có thể làm điều đó" –