0

我从 .post 后调用的 .each 得到未定义的结果。以下是我的代码。

Javascript

    var index=0;
    $("td.load_ads").each(function(){
        var loading=$(this);
        $.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_id'},function(data){
            if($("input.exist").length > 0){
                $("input.exist").each(function(){
                    if($(this).val()==data){
                        var load='0';
                    }else{
                        var load='1';
                    }
                });
            }else{
                var load='1';
            }
            alert(load);
            if(load == 1){
                $.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_details',id:data},function(data2){
                    $("body").append('<input type="hidden" class="exist" name="exist" value="'+data+'">');
                    if(data2!=0){
                        loading.html(load+'--'+data2);
                    }else{
                        loading.html("Place a Free Ad Now!");
                    }
                });
            }else{
                loading.html(load+"--"+data+"Place a Free Ad Now!");
            }
        });
        index=index+1;
    });

我在这里要做的是在我的每个 td.load_ads 上启动一个 .post,然后使用每个现有的 input.val 检查数据。如果每个现有输入的输入值与收集的数据相同,那么我不会回显第二个 .post 结果。

但是,整个操作似乎没有正确显示。我意识到我的问题出在 .post 之后的 .each 上。当我发出警报(加载)时。返回的结果未定义。我错过了什么还是我的编码在逻辑上不正确?任何帮助将不胜感激。

/*添加的问题/ *

所以现在,我有另一个问题,所以我想不妨在这里添加它。

我尝试附加输入

($("body").append('');)

在脚本的第二部分。

这样当循环自身重复时,它将能够读取输入并接收新附加的输入值。但我的负载总是返回 1,因为我的 $("input.exist").length 总是返回 false。

或者这不可能用jquery做?

/*添加的问题结束/ *

4

1 回答 1

3

You need to declare the load variable ahead of time. Right now, you are declaring it twice inside of an anonymous function, and the variable's scope will be limited to that function; the var load = ...; statements will have no observable effect from the perspective of the outer function.

Try this instead:

var load = '1';

if($("input.exist").length > 0){
    $("input.exist").each(function(){
        if($(this).val()==data){
            load='0';
        }else{
            load='1';
        }
    });
}

alert(load);
于 2013-01-03T23:55:43.493 回答