【问题标题】:Script sends an object instead of a number脚本发送一个对象而不是一个数字
【发布时间】:2016-01-10 08:05:47
【问题描述】:

下面的脚本发送一个对象而不是一个数字。我进入控制台:

获取 http://localhost:8080/new_prog_22/paginator.action?page=[object%20Object] 500(内部服务器错误)

我只需要发送hash 变量,它是一个数字,因为我的链接看起来像

<a class="idPage" href="#4">4</a>

当我按下链接时,我会在浏览器中收到警报通知An error occurred! ' + thrownError

我也不接受来自console.log("**** hash = "....的输出

脚本:

function paginFunc() {

    $( function() {
        $(window).on('hashchange', refreshByHash);
        var hash = window.location.hash; 
        hash = hash.substring(1);
        console.log("**** hash = " + hash + " ****");
        refreshByHash( hash );
    });


    function refreshByHash( hash ) {
        $.ajax({
            url : 'paginator.action?page=' + hash, // action to be perform
            type : 'GET', //type of posting the data
            dataType : 'html',
            async: true,
            success : function(htmlData) {
                $('#paginator').html(htmlData);
            },
            error : function(xhr, ajaxOptions, thrownError) {
                alert('An error occurred! ' + thrownError);
            },
        });                   
    }

}

这段代码有什么问题?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您在函数中使用$(document).ready()(它的简短版本),只有在调用函数时文档尚未准备好时才会执行。我建议您将此代码移到paginFunc 之外。此外,当hashchange 事件在window 上触发时,第一个参数成为jQuery 公开的事件数据:

    $(window).on('hashchange', function(event){
        //...
    });
    

    您需要移动检查函数内哈希的代码部分。如果您也想像以前一样触发处理程序,请在 .on() 调用之后添加 .triggerHandler('hashchange')

    $(function(){
        $(window).on('hashchange', refreshByHash);
    });
    
    function refreshByHash(){
        var hash = window.location.hash.substring(1); 
        $.ajax({
            url: 'paginator.action?page=' + hash,
            type: 'GET',
            dataType: 'html',
            async: true,
            success: function(htmlData) {
                $('#paginator').html(htmlData);
            },
            error: function(xhr, ajaxOptions, thrownError) {
                alert('An error occurred! ' + thrownError);
            },
        });                   
    }
    

    如果你想要保留hash参数,你的处理程序需要改变,但我认为你应该坚持上面的版本

    $(function(){
        $(window).on('hashchange', function(event){
            refreshByHash(window.location.hash.substring(1));
        });
        var hash = window.location.hash.substring(1);
        refreshByHash(hash);
    });
    
    function refreshByHash(hash){
        $.ajax({
            url: 'paginator.action?page=' + hash,
            type: 'GET',
            dataType: 'html',
            async: true,
            success: function(htmlData) {
                $('#paginator').html(htmlData);
            },
            error: function(xhr, ajaxOptions, thrownError) {
                alert('An error occurred! ' + thrownError);
            },
        });                   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2022-01-11
      相关资源
      最近更新 更多