4

このスクリプトを作成して、json 情報を取得しました。

 $(document).ready(function(){

    $.ajax({
      url: 'url',
      dataType: 'json',
      cache: true,
      timeout: 30000,
      success: function(data) {

            // $('#output ul').append('<li>The feed loads fine');
            $('#output ul').empty();

            $.each(data.posts, function(i,data){ 

                $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');


            });

        },
        error: function(){
            $('#output ul').append('<li>Error');
        }
    });
 });

しかし、フィードを x 秒ごとに更新したいと考えています。私はそれについて多くのことを読みましたが、私はそれを成し遂げることができます.

これどうやってするの?

4

4 に答える 4

2
var foo = function() {
    $.ajax({
      url: 'url',
      dataType: 'json',
      cache: true,
      timeout: 30000,
      success: function(data) {

            // $('#output ul').append('<li>The feed loads fine');
            $('#output ul').empty();

            $.each(data.posts, function(i,data){ 

                $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');


            });

        },
        error: function(){
            $('#output ul').append('<li>Error');
        }
    });
    setTimeout(foo, 3000);
}

foo();

3000 は、関数を再度呼び出す前に待機するミリ秒です。

于 2013-02-07T10:04:34.360 に答える
2

setIntervalを使用してコード ブロックを繰り返し呼び出し、コードを関数に入れ、関数名をsetInterval最初のパラメーターに渡します。のように新しい関数を作成する代わりに匿名関数を渡すことができますがrepeatMe、コードをより読みやすくするために関数を作成することをお勧めします。

function repeatMe(){
 $.ajax({
  url: 'url',
  dataType: 'json',
  cache: true,
  timeout: 30000,
  success: function(data) {

        // $('#output ul').append('<li>The feed loads fine');
        $('#output ul').empty();

        $.each(data.posts, function(i,data){ 

            $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');


        });
    },
    error: function(){
        $('#output ul').append('<li>Error');
    }
 });
}

setInterval(repeatMe, 5000);

編集setInterval の代わりに setTimeout を使用して、最初のジョブが完了した後に更新の次の呼び出しを送信することをお勧めします。また、setTimeout をエラーにして、更新の繰り返し呼び出しを維持します。

function repeatMe(){
 $.ajax({
  url: 'url',
  dataType: 'json',
  cache: true,
  timeout: 30000,
  success: function(data) {
        // $('#output ul').append('<li>The feed loads fine');
        $('#output ul').empty();
        $.each(data.posts, function(i,data){ 

            $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');
            setTimeout(repeatMe, 5000);
        });
    },
    error: function(){
        $('#output ul').append('<li>Error');
        setTimeout(repeatMe, 5000);
    }
 });
}
于 2013-02-07T10:05:30.883 に答える
1
setInterval(function(){

  $.ajax({
      url: 'url',
      dataType: 'json',
      cache: true,
      success: function(data) {

            // $('#output ul').append('<li>The feed loads fine');
            $('#output ul').empty();

            $.each(data.posts, function(i,data){ 

                $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');


            });

        },
        error: function(){
            $('#output ul').append('<li>Error');
        }
    });

},30000);  //30000 == 30 seconds
于 2013-02-07T10:05:14.080 に答える
1
$(document).ready(function(){
    setInterval(function() {
       $.ajax({
         url: 'url',
         dataType: 'json',
         cache: true,
         timeout: 30000,
         success: function(data) {    
            // $('#output ul').append('<li>The feed loads fine');
            $('#output ul').empty();

            $.each(data.posts, function(i,data){ 

                $('#output ul').append('<li><a href="'+data.image+'"><img class="thumb" src="'+data.image+'" alt="" /></a><h3>'+data.title+'</h3><p>'+data.text+'</p></li>');


            });

           },
            error: function(){
               $('#output ul').append('<li>Error');
           }
        });
    }, 1000 * x);
 });

上記のコードは正常に動作するはずです。ここで x の代わりに必要な秒数を入力してください:1000 *x

関数へのポインターを最初のパラメーターとして setInterval に渡す必要があることを覚えておいてください。単純に行うとsetInterval($.ajax({...}), x)、実際には $.ajax によって返される関数を x 秒ごとに実行する必要があると言えます。ただし、関数ではなくjQueryオブジェクトを返します。それが私のコードでajaxがラップされている理由ですfunction() {}

于 2013-02-07T10:05:39.223 に答える