3

私は「初心者」で「独学」ですが、他の無数の質問を調査する際にstackoverflowが非常に貴重であることがわかりましたが、これについては苦労しています。ソリューションはシンプルで、さまざまな方法で処理できると確信しています。質問を適切にフォーマットまたは提起しなかった場合は、お詫び申し上げます。

HTML

    <div id="message">
    <a id="date"  href="ajax1.php?postreply=1368479602">Topic</a>
    </div>

JQuery

ahref="";
timestamp="";
time="";

$(document).ready(function(){

$('a').click(function(){
    ahref = $(this).attr('href');
    timestamp = ahref.split('=');
    time = timestamp[1];

    alert(time); //this works       
})

alert(time) //this does not work

$.post('ajaxpost.php', {'timestamp' : time} , function(result) {;
    alert(result);
    })
})


</script>

href を配列に解析し、配列の 2 番目の値を時間変数に設定することはできますが、その変数をポスト リクエストに渡すことはできません。ポストリクエストは機能しますが、クリックイベントの外で変数を設定した場合にのみ機能します。私はここで他の投稿を調査しました.答えはグローバル変数の使用であると思いました.

4

3 に答える 3

1

Ajax リクエストをクリック イベント内に移動します。

$(document).ready(function () {

    $('a').click(function () {
        ahref = $(this).attr('href');
        timestamp = ahref.split('=');
        time = timestamp[1];
        $.post('ajaxpost.php', {
            'timestamp': time
        }, function (result) {;
            alert(result);
        })
    })
    alert(time); //this works       
})

ページが空のときに初めてページがロードされると、機能しないアラートが実行されます。ただし、クリックイベントが発生したときに値を割り当てています。

そのため、正しい時間の値がリクエストに渡されるように、リクエストを Click イベント内に移動する必要があります。

于 2013-05-18T03:04:23.540 に答える
1

なぜうまくいくのでしょうか?クリック イベント ハンドラーはtime、呼び出されたときにのみ設定されます。バインドした直後には呼び出されません。

その変数に依存するコードをコールバックに入れます。

$(document).ready(function() {
    $('a').click(function() {
        var timestamp = this.href.split('=');
        var time = timestamp[1];

        $.post('ajaxpost.php', {
            'timestamp': time
        }, function(result) {
            alert(result);
        });
    });
});

また、 の省略にも注意してvarください。なしで宣言された JavaScript 変数varは自動的にグローバル スコープにバインドされます。

于 2013-05-18T03:04:53.553 に答える