0

我正在为 Wordpress 中的自定义帖子类型开发 AJAX 过滤器。它工作得很好,但是我有一件事我无法工作。我想从正文中的脚本标记执行 AJAX 函数(如果效果更好,则从正文 onload 执行),这样我可以告诉函数在加载页面时打开哪些过滤器。

这是加载 AJAX 的函数

// ajaxLoop.js
jQuery(function($){

var loading = true;
var $window = $(window);
var $content = $("body #filterAanbod");

// ajax inladen, afhankelijk van categorie, onderwijs type en kerndoel. 
function loadActiviteiten(cat, type, doel, populair){
            $.ajax({
                type       : "GET",
                data       : {categorie : cat, type : type, kerndoel : doel, pop: populair},
                dataType   : "html",
                url        : "loopHandler.php",
                beforeSend : function() {
                          $content.fadeOut(100);
                          $content.append(
                            '<img src="images/ajax-loader.gif" />'
                          );  

                   } 
                })
              .done(function(data) {
                        $content.hide();
                        $content.html(data);
                        $content.fadeIn(500, function() { 
                                loading = false;
                                  $("#temp_load").remove();
                                });
                        })
              .fail(function() {   $("#temp_load").remove(); alert("failed miserably"); });


    }

我使用 jQuery click 函数来执行loadActiviteiten(cat, type, doel, populair)过滤器导航。这工作得很好。但是,当我想在模板文件中执行它时,它什么也不做。

这就是我在 template.php 中所做的一切

<script type="text/javacsript">
$(function() {
  loadActiviteiten();
});
</script>

这个想法是制作一个自定义元框,用户可以在其中选择要打开当前页面的过滤器并转换为 javascript 函数 ex。loadActiviteiten(term-slug,0,0,0);只加载与分类“categorie”的“term-slug”匹配的帖子。

我真的不明白为什么它没有执行,任何人都可以帮助我吗?

oo fyi,我的控制台中没有任何错误。

谢谢。

4

2 回答 2

1

你可以这样做:

第一步:首先加载jquery库。

第 2 步:加载您的 ajaxLoop.js:

<script src="ajaxLoop.js"></script>

ajaxLoop.js

function loadActiviteiten(cat, type, doel, populair){
var loading = true;
var $window = $(window);
var $content = $("body #filterAanbod");

// ajax inladen, afhankelijk van categorie, onderwijs type en kerndoel. 

            $.ajax({
                type       : "GET",
                data       : {categorie : cat, type : type, kerndoel : doel, pop: populair},
                dataType   : "html",
                url        : "loopHandler.php",
                beforeSend : function() {
                          $content.fadeOut(100);
                          $content.append(
                            '<img src="images/ajax-loader.gif" />'
                          );  

                   } 
                })
              .done(function(data) {
                        $content.hide();
                        $content.html(data);
                        $content.fadeIn(500, function() { 
                                loading = false;
                                  $("#temp_load").remove();
                                });
                        })
              .fail(function() {   $("#temp_load").remove(); alert("failed miserably"); });


    }

第三步:

现在你的函数是一个全局函数。

所以你可以这样称呼它:

<script type="text/javascript">
jQuery(document).ready(function($){

    loadActiviteiten(cat, type, doel, populair);
});
</script>

只需确保在加载 ajaxLoop.js 文件后调用您的函数

于 2013-03-09T18:25:36.040 回答
0

我发现最简单的方法是success: function(result) {}在 ajax 调用中添加一个子句。此外,您应该以不同的方式调用它,以确保 dom 已准备好进行操作。

$(document).ready(loadActiviteiten);

代替

$(function() {
  loadActiviteiten();
});
于 2013-03-09T15:07:22.673 回答