我的功能不会运行?

时间:2011-11-26 03:30:11

标签: javascript jquery ajax

我已经厌倦了萤火虫告诉我的vars没有被定义......

我有一个按钮:下一个。单击按钮时,我希望它将php页面加载到div中,为php页面指定代表下一页的变量。

为此,我有一个变量crntpage,用于存储当前页面的值。为了计算下一页的var必须是什么,我有一个名为next的函数,它计算该值并返回它。

我们假设我们在第5页:

的javascript

$(document).ready(function() {

$.ajax({
    url: 'pagination.php',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (pages) {
                last = pages['last'];
                crntpage = 1;

                function nxt(b) {
                    if (b == last) {
                        next  = last;
                    } else {
                        next = b + 1;
                    }
                    return next;
                }

                $('#next').live('click', function() {
                    crntpage(next);
                    $('#content').load('getposts.php?pagenum=' + nxt(crntpage));
                    return false;
                });
    }
});
});

HTML

<div id="previous"> 
        <a href=''> <-Previous</a>
</div>

我一直收到一个错误,说下一个没有定义。我的猜测是因为我的nxt函数没有收到last的值。我做错了什么?

2 个答案:

答案 0 :(得分:2)

使用nxt可以更加惯用地完成Math.min()功能的尝试:

$('#next').live('click', function() {
    crntpage = Math.min(crntpage + 1, last);
    $('#content').load('getposts.php?pagenum=' + crntpage);
    return false;
});

您还应该使用var关键字为变量声明添加前缀,以免污染全局命名空间。

以下是修订后的代码:

$(function() {

    var currentPage = 1;
    var last = 1;

    $('#next').live('click', function() {
        currentPage = Math.min(currentPage + 1, last);
        $('#content').load('getposts.php?pagenum=' + currentPage);
        return false;
    });

    $.ajax({
        url: 'pagination.php',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",    
        cache: false,
        success: function (pages) {
            last = pages['last'];
        }
    });

});

答案 1 :(得分:0)

看起来你没有定义next。 (或者可能是你的代码中没有在这里发布的部分定义的,我不知道)你试过这个:

$(document).ready(function() {
var next = ''; //defining the variable first, then you set it below in nxt()
$.ajax({
    url: 'pagination.php',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (pages) { 
                last = pages['last'];
                crntpage = 1;

                function nxt(b) {
                    if (b == last) {
                        next  = last;
                    } else {
                        next = b + 1;
                    }
                    return next;
                }

                $('#next').live('click', function() {
                    crntpage(next);
                    $('#content').load('getposts.php?pagenum=' + nxt(crntpage));
                    return false;
                });
    }
});
});