从脚本标记的页面onload调用jQuery Ajax函数

时间:2013-03-09 15:01:58

标签: php jquery ajax wordpress

我正在为Wordpress中的自定义帖子类型开发AJAX过滤器。它工作得非常好但是我有一件事我无法工作。我想从正文中的脚本标记执行AJAX函数(或者如果更好的话,从body 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点击功能为过滤器导航执行loadActiviteiten(cat, type, doel, populair)。这完全没问题。但是,当我想在模板文件中执行它时,它什么都不做。

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

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

我们的想法是创建一个自定义元框,用户可以选择哪些过滤器打开当前页面并转换为javascript函数ex。 loadActiviteiten(term-slug,0,0,0);只需加载与分类“类别”的“term-slug”匹配的帖子。

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

步骤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"); });


    }

步骤3:

现在你的功能是一个全局功能。

所以你可以这样称呼它:

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

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

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

答案 1 :(得分:0)

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

$(document).ready(loadActiviteiten);

而不是

$(function() {
  loadActiviteiten();
});