2017-02-07 12 views
-2

以下のコードは、setIntervalで設定された間隔に従ってトリガーされません。最初にページがロードされると、結果セットが返されますが、Ajaxスクリプトは初めてページが読み込まれた後には実行されません。Ajax - setIntervalがトリガーされない

<html> 
 
    <head> 
 
    <script language="javascript" type="text/javascript" src="jquery.js"></script> 
 
    </head> 
 
    <body> 
 

 
    <!------------------------------------------------------------------------- 
 
    1) Create some html content that can be accessed by jquery 
 
    --------------------------------------------------------------------------> 
 
    <h2> Client example </h2> 
 
    <h3>Output: </h3> 
 
    <div id="output"></div> 
 

 
    <script id="source" language="javascript" type="text/javascript"> 
 

 
    $(function getEvent() 
 
    { 
 
    //----------------------------------------------------------------------- 
 
    // 2) Send a http request with AJAX http://api.jquery.com/jQuery.ajax/ 
 
    //----------------------------------------------------------------------- 
 
    $.ajax({ 
 
\t url: 'get_events.php', data: "", dataType: 'json', success: function(rows) 
 
\t { 
 
\t  for (var i in rows) 
 
\t  { 
 
\t  var row = rows[i]; 
 

 
\t  var id = row[0]; 
 
\t  var vname = row[1]; 
 
\t  var time = row[2]; 
 
\t  $('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname+"<b> time: </b>"+time) 
 
\t     .append("<hr />"); 
 
\t  } 
 
\t } 
 
\t }); 
 
    }); 
 

 
$(document).ready(function() { 
 
var run = setInterval(getEvent, 1000); 
 
}); 
 

 
    </script> 
 
    </body> 
 
</html>

私はこのフォーラムでは、すべて同様の記事を見てきましたが、私はまだ私の関数がしたsetIntervalによってトリガーされるように得ることができません。以下の私のコードを見てください。どんな助けもありがとうございます。

+1

関数を '$(...)'で囲む必要はありません。その構文は '$(document).ready(...)'の略語としてのみ使われます。それを削除し、期待どおりに動作するはずです。 – cmbuckley

+0

ブラウザのコンソールを使用してデバッグします。それを使わないで開発することはできません。 –

答えて

-1

あなたの機能はグローバルスコープにはないようです。 Setintervalはそれについて知りません。

$ラッパーではなく、関数を宣言するにはvar getEvent = function() { ... }を使用してください。あなたは$と呼ばれる別の関数に関数を渡しているこの

$(function functionName(){/*function body*/}) 

を行うことにより

+1

正解のための2つのdownvotes。 win-winについて聞いたことがありますか?) –

-1

。これはfunctionNameという関数をどこにも作成しません。したがって、あなたがあなたのインターバルを開始するとき、存在しない関数を呼び出そうとしています。

関数宣言の前後にある$()を削除します。これは、パラメータとして渡すのではなく、関数を定義します。

+0

'これはfunctionNameという関数をどこにも作成しません。それはコールの中で利用可能です。 –

+0

@ shukshin.ivanはい。 jQueryは、その作者がこれを決めたことで、一度だけ実行します。それだけです。 $がjQueryでなかった場合、何もしないなど、渡された関数で何か他のことを行うことができます。私はそれが関数のスコープで利用可能であり、引数オブジェクトを介してアクセスできると述べることができたことは知っています。 –

関連する問題