【问题标题】:Simple Ajax form submission Error简单的 Ajax 表单提交错误
【发布时间】:2012-09-13 07:08:05
【问题描述】:

我正在尝试实现 Ajax jQuery 表单提交。我在下面粘贴的代码不起作用。我收到 day monthyear 的未定义索引错误

jQuery Ajax

<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> 

请问我哪里错了。

【问题讨论】:

  • MySQL 有一个DATE 类型。
  • $.get('function.php', { day: new_day, month: new_month, year:new_year} ); new_day, new_month, new_year 是否真的在代码中的任何位置赋值?
  • new_day new_monthnew_year 是什么?
  • 第一个选择选项是空白的(调用ajax时的默认值,没有从选择列表中进行选择)这就是错误的原因。
  • 另外,表单使用 POST 方法,而您的 ajax 使用 GET。

标签: php mysql ajax forms


【解决方案1】:

您的 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。

【讨论】:

    【解决方案2】:

    更改以下块

            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();
    

    【讨论】:

    • 您确定您的表单是通过 ajax 提交的吗?
    • 您在使用任何$GET 变量之前尝试过print_r($_GET) 吗?也可以试试print_r($_POST)
    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2013-01-04
    • 2022-12-03
    • 1970-01-01
    • 2018-12-24
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多