【问题标题】:Getting only a part of a file from Jquery ajax仅从 Jquery ajax 获取文件的一部分
【发布时间】:2009-06-03 12:32:10
【问题描述】:

我有一些非常简单的示例代码,如下所示:

$.ajax({
  url: 'demo2.htm',
  success: function(loadeddata){
    $("#loaded_data").after(loadeddata);
    alert('success');
  },
  error: function(){
    alert('failure');
  }
});

加载的数据当前返回所有内容。我需要做的是只获取一个特定的 div,然后将其添加到#loaded_data。

我该怎么做?

谢谢!

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

这是 jQuery 内部的做法:

$("<div/>").append(loadeddata).find('#mydiv');

如果您希望在 HTML 中包含 SCRIPT 标记,则应将其放入以避免 IE 中出现任何“Permission Denied”错误:

$("<div/>").append(loadeddata.replace(/<script(.|\s)*?\/script>/g, "")).find('#mydiv');

编辑

你错过了应该发生的事情的重点。

通过执行$("&lt;div/&gt;").append(...);,jQuery 创建了一个虚拟&lt;div&gt;,并通过将其插入&lt;div&gt; 中让浏览器解析HTML。完成后,我们可以找到我们想要的 DIV,并返回 HTML。所以我应该放在上面的更合适的代码示例如下所示:

var html = $("<div/>").append(loadeddata).find('#mydiv').html();
$('#whereIwantIt').html(html);

正如您在链接中看到的那样,this does what you want

【讨论】:

  • 感谢您的帮助。我不确定这里发生了什么。但我无法让它发挥作用。 jsbin.com/avamo我只想在页面中添加#hello。我不确定为什么在 ajax 完成后它变成白色。但在那一瞬间,我看到整个页面都被添加了,而不仅仅是我指定的部分。谢谢。
【解决方案2】:

好的,这是一个新的带有 find 的 pastebin,并且正如 Paolo 提到的那样修复了脚本问题。

http://jsbin.com/esoze/edit

你可以看到页面的整个 HTML 被嵌入,而不仅仅是指定的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2017-09-03
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多