Jquery ajax发布功能

时间:2011-09-07 18:27:51

标签: jquery ajax

大家好我正在使用ajax从php检索数据,我想要做的是首先我找到在线用户列表,然后基于该列表我向服务器发出请求让我们说如果有2人被记录在那时我使用for循环来查找数字然后只为这2个用户获取数据这是我的JS代码。 #name等于记录的用户名,如果一个用户登录,则该用户的#name为1,其他用户为2,依此类推

    $(function(){
    function liveRefresh(){
    var count = 1;

    for(x=0; x<=count; x++)
       {
    var track = $('#name' + x).val();       

    alert(track);   

    parameters = 'send_to=' + track;

        $.ajax({                
            url: "scripts/live-refresh.php", 
            type: "POST",
            data: parameters,     
            cache: false,
            success: function(html){

            alert(track);
        }
        });
    }
}

liveRefresh();

});

如果我在ajax请求之前警告跟踪变量它会向我显示所有名称但是在我发出ajax之后我正在警告相同的变量时它表示未定义。

您可以尝试使用此代码查看正在发生的事情并查看是否有任何方法

谢谢

2 个答案:

答案 0 :(得分:1)

$(function(){
    function liveRefresh(){
    var count = 1;

    for(var x = 0 ; x <= count; x++)
    {
        var track = $('#name' + x).val();       
        do_ajax( parameters, track );
    }
}

function do_ajax( parameters, track ) 
{        
        $.ajax({                
            url: "scripts/live-refresh.php", 
            type: "POST",
            data: parameters,     
            cache: false,
            success: function(html){
            alert(track);
            }
        });
}

liveRefresh();

您需要形成一个闭包来保留值。

答案 1 :(得分:-1)

@ 3nigma更改变量名称不会有帮助或需要,并使其全局“可以”帮助但是一旦你转到循环中的下一个,它就会被覆盖。

@Shanon:我不确定这是做这种事情的最佳方法。我宁愿更新整个列表,然后对服务器进行一些AJAX调用。

但是如果你想像那样运行它,那么这应该有效:

$(function(){
    var callAjax = function(id) {
        var parameters = 'send_to=' + id;

        $.ajax({
            url: "scripts/live-refresh.php", 
            type: "POST",
            data: parameters,     
            cache: false,
            success: function(html){
                alert(id);
            }
        });
    },
    liveRefresh = function() {
        var count = 1;
        for(var x=0;x<=count;x++) {
            var track = $('#name' + x).val();       

            callAjax(track);
        }

    };

    liveRefresh();

});