3

Ajax jQuery フォーム送信を実装しようとしています。以下に貼り付けたコードが機能しません。day monthおよびの未定義のインデックス エラーが発生します。year

jQuery アヤックス

<script>
 $(document).ready(function() {
    $('#cal_submit').click(function(event) { 
      if ($('select[name="day"]').val() == '') {
            event.preventDefault();
            alert('Please enter a day');
        }
        else {
            event.preventDefault();
            new_day = $('select[name="day"]').val();
            new_month = $('select[name="month"]').val();
            new_year = $('select[name="year"]').val();
            $.get('function.php', { day: new_day, month: new_month, year:new_year} );
            $('select[name="day"]').val('');
            $('select[name="month"]').val('');
            $('select[name="year"]').val('');
        }
    }); 
});
</script>

処理 php が配置されている関数。

function calendar()
{ 


        $j = mysql_real_escape_string($_GET['day']);
        $F = ucwords(mysql_real_escape_string($_GET['month']));
        $Y = mysql_real_escape_string($_GET['year']);
        $date =" ".$F." ".$j.", ".$Y." ";

   $query = "SELECT * 
              FROM calendar 
              WHERE event_day = '".$j."'
              AND   event_month = '".$F."'
              AND   event_year  = '".$Y."'" ; 
            $run = mysql_query($query);
            $norows = mysql_numrows($run);

            if ($norows < 1){
                echo "<div class=\"indexnoresult\">No TAP Event(s) for $date</div>" ;
            }  else {
            while($row = mysql_fetch_array($run)) {

                  echo "<div class=\"indexnoresult\">Event(s) for $date<br>
                   Name :   $row[event_name]  <br>
                   Time :   $row[event_time]   <br> 
                   Venue :  $row[event_venue]  <br>
                  </div> 
                 " ;



            }

            } ?>

HTMLフォーム

     <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" >

                Pick Date To View Events     

             <select name="day">
                    <option value ="">    </option>
                    <option value ="1">1</option>
                    <option value ="2">2</option>   
             </select> 

    Month
                <select name="month">
                    <option value ="">    </option>
                    <option value ="january">January</option>
                    <option value ="february"> february </option>
                    <option value ="march">March</option>
                 </select>

    Year:
                 <select name="year">
                    <option value ="">    </option>
                    <option value ="2005">2005</option>
                    <option value ="2006">2006</option>             
               </select>

    <input type='submit' name='cal_submit' id='cal_submit'>
    </form>
    </div> 

どこが間違っているのか教えてください。

4

2 に答える 2

0

ajaxオブジェクト/データに同じ変数が必要です。

        day = $('select[name="day"]').val();
        month = $('select[name="month"]').val();
        year = $('select[name="year"]').val();
        $.get('function.php', { day: day, month: month, year:year} );

最初の選択オプション(選択リストから選択せずにajaxが呼び出されたときのデフォルト値)が空白であるため、エラーが発生します。

また、フォームには POST メソッドと記載されていますが、ajax は GET です。

于 2012-09-20T20:59:40.540 に答える
0

次のブロックを変更します

        day = $('select[name="day"]').val();
        month = $('select[name="month"]').val();
        year = $('select[name="year"]').val();

以下へ

        new_day = $('select[name="day"]').val();
        new_month = $('select[name="month"]').val();
        new_year = $('select[name="year"]').val();
于 2012-09-20T20:56:05.963 に答える