JS error after AJAX get/load
JS error after AJAX get/load
我有一个wordpress博客,我有一个flexslider(插件的名字是meta slider)的帖子。
现在我在博客上有一个页面,用AJAX从帖子动态加载一个div的内容。代码如下:
$(".post-link").click(function(){
var post_link = $(this).attr("href");
$("#refpage-single-post-container").html("content loading");
$.get(post_link, function(result){
$result = $(result);
$result.find('div.entry-content').appendTo('#refpage-single-post-container');
$result.find('script').appendTo('#refpage-single-post-container');
}, 'html');
//e.preventDefault();
return false;
});
这基本上工作得很好,但之后滑动器JS失败,出现以下错误:
(来自Chrome的虚拟机错误)
Uncaught TypeError: undefined is not a function VM4036:3
metaslider_531 VM4036:3
timer_metaslider_531 VM4036:18
(anonymous function) VM4036:20
(anonymous function)
下面是滑块脚本(以空行开头):
var metaslider_531 = function($) {
--> $('#metaslider_531').flexslider({
slideshowSpeed:3000,
animation:"fade",
controlNav:true,
directionNav:false,
pauseOnHover:true,
direction:"horizontal",
reverse:false,
animationSpeed:600,
prevText:"<",
nextText:">",
slideshow:true
});
};
var timer_metaslider_531 = function() {
var slider = !window.jQuery ? window.setTimeout(timer_metaslider_531, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_531, 1) : metaslider_531(window.jQuery);
};
timer_metaslider_531();
所以我的问题是:我怎么能解决这个问题?我能重新初始化JS吗?
对我来说,它看起来像。flexslider函数调用失败,因为原型没有设置在(新的)htmldiv上,id为$('#metaslider_531'),因此是"未定义"(?)。也许是瞎猜。
我检查的是哪个版本的jQuery可能被加载,但它看起来只有v1.11.0加载一次,所以我应该是"无冲突"
我很新的JS和AJAX,所以任何帮助解除迷雾在我的大脑将不胜感激。:)
你可能没有加载flexslider插件,在jQuery或覆盖$之前加载它,因为你正在加载几个库。
在开发工具中,您是否看到任何未加载的文件?
在开发工具中加载了哪些源?加载脚本的顺序是什么?
$("");
返回一个jQuery对象。你可以像flex slider那样扩展jQuery的更多功能但如果你不加载它它就无法使用
我能够"修复"我的问题做以下:
首先,我改变了我的ajax调用,通过以下代码将整个页面加载到div中:
$("#refpage-single-post-container").load(post_link, function() {
} );
我知道这将使JS工作,因为我昨天看到它工作-但它加载了大量不需要的垃圾。
其次,我找出了页面的页眉和页脚的哪些部分似乎是JS工作所必需的,结果我完全忘记了页脚昨天晚上。
然后编辑single.php,只输出简单的文章内容,包括下面的脚本和页眉和页脚的css。这些都需要加载新的帖子,使JS工作:
<?php $siteurl = get_site_url(); ?>
<script type="text/javascript" src="<?php echo $siteurl; ?>/wp-includes/js/jquery/jquery.js?ver=1.11.0"></script>
<?php $post = get_post($_POST['id']);?>
<div id="single-post post-<?php the_ID();?>">
<?php while (have_posts()) : the_post();
the_content();
endwhile;?>
</div>
<link rel="stylesheet" id="metaslider-flex-slider-css" href="<?php echo $siteurl ?>/wp-content/plugins/ml-slider/assets/sliders/flexslider/flexslider.css?ver=2.9.1" type="text/css" media="all">
<script type="text/javascript" src="<?php echo $siteurl ?>/wp-content/plugins/ml-slider/assets/sliders/flexslider/jquery.flexslider-min.js?ver=2.9.1"></script>
所以最后,我能够加载到该div的帖子,并有它的工作。但我现在也不得不接受这样一个事实,即我的single.php不再输出完整的页面,因此非常不可用。(设置css显示:none不知何故不会在页眉,页脚等工作,因为在标记中重复的id可能)我想我可能不需要在一个URL上显示一个帖子,但它并没有让我感觉很好,因为这打破了我的主题上的一个很好的功能部分,这是一个生产网站:/对此有什么想法吗?
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 有没有一种方法可以防止img get请求使用css或js发生
- CORS-重定向到第二个GET正在接收的页面
- jQuery Ajax GET请求工作不正常
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 返回/从Twit's客户端.get
- AngularJS错误:提供程序必须从$get工厂方法返回值
- jQuery点击ON现在使用.load触发关闭
- 如何在router.get()方法中传递url作为参数
- 使用Javascript/JQuery获取JSON GET数据
- Mediawiki皮肤创建-Javascript don'Don’t get load
- jQuery load()回调导致POST而不是GET
- 当外部内容由ajax生成时,如何使用ajax.get或ajax.load获取内容
- JS error after AJAX get/load
- 如何使用jquery .load()加载PHP GET值?
- 使用当前的require.js路径获取jquery load/get
- 不能用Jquery从$.get() / $.load()函数中选择ID.请帮帮我
- Dojo XHR get load HTML不显示Dojo对象
- Chrome不希望接受$Ajax, $.Get, .load()或我尝试的任何其他方法
- jQuery ajax调用(.get、.post.、.load等),返回数据和IE问题