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でデータを確認することです。この既存の各入力の入力値が収集されたデータと同じである場合、2番目の.post結果をエコーアウトしません。

ただし、操作全体が正しく表示されていないようです。私の問題は、.postの後の.eachにあることに気づきました。アラート(ロード)を行ったとき。返された結果は未定義でした。私は何かを見逃していますか、それとも私のコーディングが論理的に間違っているのですか?どんな助けでも大歓迎です。

/*問題を追加/ *

だから今、私は別の問題を抱えているので、ここに追加したほうがいいと思いました。

入力を追加してみます

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

スクリプトの2番目のセクションにあります。

そのため、ループが繰り返されると、入力を読み取り、新しく追加された入力値を取り込むことができます。しかし、$( "input.exist")。lengthは常にfalseを返すため、負荷は常に1を返します。

または、これはjqueryでは実行できませんか?

/*追加された問題の終わり/ *

4

1 に答える 1

3

load事前に変数を宣言する必要があります。現在、無名関数内で2回宣言しており、変数のスコープはその関数に制限されます。var load = ...;ステートメントは、外部関数の観点からは観察可能な効果はありません。

代わりにこれを試してください:

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 に答える