【问题标题】:The variable assigned is not globally changed after ajax successajax成功后分配的变量不会全局更改
【发布时间】:2017-03-20 01:23:07
【问题描述】:

在此页面中,我有一个带有分页的表格。在分页部分,“first”类显示第一页记录,“last”类显示最后一页,“next”类显示下一个后续数据。这些所有功能都正常工作。但我的问题是当我单击“最后一个”类的“”时,它显示最后一页记录。之后,当我单击“上一个”类的“td”时,它必须在最后一个之前显示这些记录。

例如如果有 17 页,如果我点击最后一页,那么它会显示第 17 页,但是当我点击“上一页”时,它必须显示 16 而不是其他。

所以我尝试的是在 ajax 成功后更新页码,但该值在页面中并没有全局更改。

谁能帮我解决这个问题。谢谢。

以下是我的代码。

<div class="container">
    <div class="row">
        <table id="display_result">
        </table>
        <table id="pagination">
            <tr>
                <td><div class="first">|&lt;</div></td>
                <td><div class="previous">&lt;</div></td>
                <td><div class="next">&gt;</div></td>
                <td><div class="last">&gt;|</div></td>
            </tr>
        </table>
    </div>
</div>

$(function(){
    var page;

    function displayData(ip, page, isLast){
        var input = ip;
        var datas = {
            'input': input,
            'page':page,
            'isLast':isLast
        }

        $.ajax({
            url: "getData.php",
            type: 'post',
            dataType: 'json',
            success: function (data) {
                var response = data.result;
                page = data.page;
                $("#display_result").html('');
                $.each(response, function(i, item) {
                    $('<tr>').html(
                        "<td>" + response[i].line + "</td></tr>").appendTo('#display_result');
                });
            },
            async:false,
            data: datas
        });
    }

    $("#pagination").delegate('td div', 'click', function(e) {
        e.preventDefault();
        var filename = $('#myInput').val().split('\\');
        if ($(this).hasClass("first")){
            page = 0;
            displayData(filename[2], page, false);
        }
        if ($(this).hasClass("previous")){
            page = page - 1;
            displayData(filename[2], page, false);
        }
        if ($(this).hasClass("next")){
            page = page + 1;
            displayData(filename[2], page, false);
        }
        if ($(this).hasClass("last")){
            displayData(filename[2], page, true);
        }
    });
})

【问题讨论】:

  • 那么点击上一个会得到什么?
  • @AmrAly 当我在这里控制台 $("#pagination").delegate('td div', 'click', function(e) { e.preventDefault(); console.log("start ", page); 我得到'-1',根据我的例子,我认为应该是'17'
  • 试试displayData(filename[2], page, true);而不是displayData(filename[2], page, false);,告诉我你得到了什么。
  • 当传递为真时,我得到值'0'。这个真假我用来检查页面是否是最后一页
  • 如果我从 ajax 成功获得委托单击功能内的更新页面,我的问题将解决

标签: javascript php jquery ajax


【解决方案1】:

我通过添加一个新函数来解决这个问题

function set_page(val){
    page = val;
}

然后在 ajax 成功时,我传递一个更新的页面

page = data.page;
set_page(page);

这为我解决了。

【讨论】:

  • 创建一个新函数并在ajax成功时更改页面的值
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多