我如何使用 jQuery 的 ajax 方法从 html 获取 dom 元素?

发布于 2024-11-15 20:17:04 字数 565 浏览 0 评论 0原文

我遇到了一个独特的问题。我正在使用 jQuery 进行简单的 ajax 调用来获取 html 文件的内容。

$.ajax({
  url: "foo.html",
  dataType: "html",
  success: function(data){
    console.log(data);
  }
});

foo.html 是一个简单的 html 文件,其主 div 称为#mainContainer。我想做的就是从 mainContainer 中获取所有内容并将它们存储在 var 中,这样我就可以将它们添加到页面中的另一个 div 中。

这是 index.html (正在进行调用的文件)。

这是 foo.html (我试图调用和解析的文件)。

I have encountered a unique problem. I am doing a simple ajax call using jQuery to get the contents of an html file.

$.ajax({
  url: "foo.html",
  dataType: "html",
  success: function(data){
    console.log(data);
  }
});

foo.html is a simple html file with a main div called #mainContainer. All I want to do is get all of the contents from the mainContainer and store them in a var so i can add them to another div somewhere in my page.

Here's index.html (the file that is making the call).

Here's foo.html (the file i am trying to call and parse).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

西瑶 2024-11-22 20:17:04

jQuery“.load()”API 完全满足您的要求:

$('#the_target_div').load("foo.html #mainContent", function() {
  // stuff to do when content is ready
});

您只需在 URL 后面添加一个选择器字符串,并用空格分隔即可。

需要注意的一件事是:如果加载的页面中有任何重要的 JavaScript(在

一种完全不同的方法是将页面加载到隐藏的 中,然后深入到该 DOM 中找到您想要的内容。然后可以将其复制到主页中。

The jQuery ".load()" API does exactly what you're asking for:

$('#the_target_div').load("foo.html #mainContent", function() {
  // stuff to do when content is ready
});

You simply add a selector string after the URL, separated by a space.

One thing to note: if the loaded page has any important JavaScript in it (in <script> tags), when you load the page that way the scripts will not be run. If you need that behavior, then you either have to pull out the content yourself (which is a minor mess) or else have your server do the work and respond with only the fragment you need.

A completely different approach would be to load your page into a hidden <iframe> and then dive into that DOM to find what you want. It could then be copied into the main page.

成熟的代价 2024-11-22 20:17:04

var mainContainerInnerHtml = $(data).find("#mainContainer).html();

var mainContainerInnerHtml = $(data).find("#mainContainer).html();

维持三分热 2024-11-22 20:17:04

你不需要获取 dom 元素。
您可以使用查询replaceWith函数来替换。

就像这样:

$("#data").replaceWith($("#data",ajaxReturnHtml)).serialize();

它对我有用。

you do not need get the dom elements.
you can use query replaceWith function to replace.

just like this:

$("#data").replaceWith($("#data",ajaxReturnHtml)).serialize();

it works to me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文