提问人:Choxmi 提问时间:4/16/2018 最后编辑:NimanthaChoxmi 更新时间:11/17/2023 访问量:1225
使用 jquery load() 加载动态内容
Load dynamic content using jquery load()
问:
jQuery load() 可用于从另一个页面加载组件。
$( "#result" ).load( "ajax/test.html #container" );
但是,如果包含一些动态加载的元素,则 load() 函数不会在元素中呈现这些动态组件。#container
#result
例如:客户评论页面动态加载用户评论。因此,注释不能显示在元素内部。#result
是否可以使用函数来实现这一点,或者是否有任何其他方法可以实现这一点。load()
答:
0赞
mooga
4/16/2018
#1
为什么不使用,否则您需要管理这些网站,因为您需要编辑和制作iframe
.htaccess
allow-access
评论
1赞
ICE
4/16/2018
如果你想从中获取元素,iframe 会给你同样的跨域问题。
2赞
Adrian Wragg
4/16/2018
#2
您遇到的一个问题归结为问题的这一部分:
源页面有一些动态加载的元素
一旦你解决了CORS及其同类问题,你所要做的仍然是要求远程服务器提供一个静态文件并渲染它。
但是,在源站点上,您几乎肯定会找到填充这些元素的其他脚本;这些脚本在源服务器上运行,但不会由当前代码执行。您需要在自己的站点上复制这些脚本的执行,包括提取其他数据。
一个更简单的解决方案是询问源站点的所有者,他们是否有外部可用的 API,这将允许您提取此数据并自动呈现它。
评论
0赞
ICE
4/16/2018
API 是跨域的最佳解决方案,因为如果它们更改元素 ID 或结构,可能会产生不希望的结果。
0赞
Choxmi
4/16/2018
感谢您的建议@Adrian.因为我正在为源页面使用插件,并且我与插件所有者没有任何联系。:(
1赞
ICE
4/17/2018
@Choxmi如果您无法创建 API 或请求 API,那么唯一的解决方案就是我提供的东西。您应该在服务器上获取它,而不是在客户端获取它。
1赞
Choxmi
4/17/2018
@ICE谢谢。是的,这似乎是我唯一的选择。:(
0赞
Adrian Wragg
4/17/2018
@Choxmi 如果你能算出源站点发出的调用,并且它没有违反他们的条款和条件(首先检查),你可以考虑编写自己的API(完全避免CORS问题)并从你的站点调用它。
1赞
ICE
4/16/2018
#3
在PHP上,对于跨域,您可以获得如下元素:
//url
$url = 'https://url.com';
//get content from the URL
$cotnent = file_get_contents($url);
//disable errors
libxml_use_internal_errors(true);
//Load HTML
$dochtml = new DOMDocument();
$dochtml->loadHTML($cotnent);
//Get the ID that you want
$elm = $dochtml->getElementById('elementid');
if ($elm){
//elm content
echo $elm->nodeValue;
}
评论
target-div
.load()