2012-04-05 21 views
0

jQueryでAjaxを呼び出そうとしていて、ページロード時にPHPで設定された変数を2つの別々の関数に渡す必要があります。 。jQueryセレクタコールバック関数のグローバルJavaScriptスクリプト

var ajax_load = "Loading...", 
    loadUrl = "calendar_backend.php", 
    month = parseInt(<?php echo $month ?>); 
    console.log(month); 
    month = <?php echo $month ?>; 

$("#calendar_box").on("click",'#next_month',function(){ 
    console.log(month); 
    $("#calendar") 
     .html(ajax_load) 
      .load(loadUrl, "month=" + month + "&go=next"); 
    var month = ++month; 

    console.log(month); 
}); 

$("#calendar_box").on("click",'#previous_month',function(){ 
    $("#calendar") 
     .html(ajax_load) 
      .load(loadUrl, "month" + month + "&go=previous"); 
    var month = --month; 
}); 

私はこれをデバッグしようとするそこでのコンソールの呼び出しを持っていると私は2番目の1から未定義の最初の.log()から4を取得し、第三からはNaN。これらの3つから、変数が.on()ハンドラ関数に渡されていないことがわかります。

カレンダー生成ページはインデックスページに含まれており、AJAXはその月の正しいデータを再生成するために使用されます。今月からどのくらい離れているかを知るために、get stringで渡された月が必要です。

助けてくれてありがとう!

+2

あなたは関数で、 'var'キーワードを取り除く必要があります。また、増分/減分演算子を使用する場合は、代入も使用しないでください。 '++ month'や' --month'だけが必要です。 – Pointy

答えて

0

ファンクション本体内にvarキーワードを使用しないでください。 varsuccess functionの内部に新しい変数を導入します。そして、あなたはdecress/incresseオペレータが間違って使用して、その唯一のmonth++;month--;

var ajax_load = "Loading...", 
    loadUrl = "calendar_backend.php", 
    month = parseInt(<?php echo $month ?>); 
    console.log(month); 
    month = <?php echo $month ?>; 

$("#calendar_box").on("click",'#next_month',function(){ 
    console.log(month); 
    $("#calendar") 
     .html(ajax_load) 
      .load(loadUrl, "month=" + month + "&go=next"); 
    month++; // Removed var and incressing 

    console.log(month); 
}); 

$("#calendar_box").on("click",'#previous_month',function(){ 
    $("#calendar") 
     .html(ajax_load) 
      .load(loadUrl, "month" + month + "&go=previous"); 
    month--; // Removed var and decressing 
}); 
+0

さて、それは機能しましたか?それとももっとエラーがありますか? –

+0

jQueryサイト[How jQuery Works](http://docs.jquery.com/How_jQuery_Works#Callback_with_arguments)から提案や提案を受け取り、jQuery.on( "click")、関数next_month(月){ \t console.log(月); \t $( "#calendar").html(ajax_load).load(loadUrl、 "月=" +月+ "&go =次");月++; console.log(月);} ' \t' $( " )しかし、私が再度クリックすると、月の元の値を使ってまだ更新されていません。 – Rockstar04

+0

見つけました!本当にありがとう!! – Rockstar04

関連する問題