0

我有一个标准的 HTML 表单,我想将该表单中的数据存储到 MySQL 数据库中。我的一切工作正常,但现在我想实现 AJAX 以防止页面刷新,突然间我遇到了麻烦。

问题:没有生成“成功”警报,并且没有将数据保存到数据库中。

我对 Jquery/AJAX 的接触非常非常少,并且正在学习中,所以如果我犯了一个基本的错误,请多多包涵。

*更新 1***

这是我的新 AJAX 代码。表单中的数据现在正在保存到数据库中,但仍然没有成功警报。事实上,没有弹出窗口出现。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $('form').bind('submit', function(){
                $.ajax({
                    type: 'post',
                    url: "InsertNewMentor.php",
                    data: $("form").serialize(),
                    success: function() {
                        alert("Success!");
                    }
                });
                return false;
            });
        });
    </script>

这是表格(最后包括 AJAX 代码)。(更新:不再使用此代码,见上文)

<form>
<table cellpadding="10">

<tr>
<td><b>Chapter:</b></td>
<td><input type="text" name="chapter"></td>
</tr>

<tr>
<td>First Name:</td>
<td><input type="text" name="first"></td>

<td>Last Name:</td>
<td><input type="text" name="last"></td>
</tr>

<tr>
<td>Gender:</td>
<td>
<select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</td>

<td>Ethnicity:</td>
<td>
<form action="">
<select name="ethnicity">
<option value="white">White/Caucasian</option>
<option value="hispanic">Hispanic</option>
<option value="asian">Asian/Pacific Islander</option>
<option value="native_american">Native American Indian</option>
<option value="other">Other</option>
</form>
</td>
</tr>

<tr>
<td>Year in School</td>
<td>
<form action="">
<select name="year_in_school">
<option value="freshman">Freshman</option>
<option value="sophomore">Sophomore</option>
<option value="junior">Junior</option>
<option value="senior">Senior</option>
</select>
</form>
</td>

<td>Phone Number:</td>
<td><input type="text" name="phone"></td>
</tr>

<tr>
<td>Email Address:</td>
<td><input type="text" name="email"></td>

<td>Street Address:</td>
<td>
<input type="text" name="address">
</td>
</tr>

<tr>
<td>Apt/Suite:</td>
<td>
<input type="text" name="suite_num">
</td>

<td>City:</td>
<td>
<input type="text" name="city">
</td>
</tr>

<tr>
<td>State:</td>
<td>
<select name="state">
<option value="Alabama">Alabama</option>
<option value="Alaska">Alaska</option>
<option value="Arizona">Arizona</option>
<option value="Arkansas">Arkansas</option>
<option value="California">California</option>
<option value="Colorado">Colorado</option>
<option value="Connecticut">Connecticut</option>
<option value="Delaware">Delaware</option>
<option value="Florida">Florida</option>
<option value="Georgia">Georgia</option>
<option value="Hawaii">Hawaii</option>
<option value="Idaho">Idaho</option>
<option value="Illinois">Illinois</option>
<option value="Indiana">Indiana</option>
<option value="Iowa">Iowa</option>
<option value="Kansas">Kansas</option>
<option value="Kentucky">Kentucky</option>
<option value="Louisiana">Louisiana</option>
<option value="Maine">Maine</option>
<option value="Maryland">Maryland</option>
<option value="Massachusetts">Massachusetts</option>
<option value="Michigan">Michigan</option>
<option value="Minnesota">Minnesota</option>
<option value="Mississippi">Mississippi</option>
<option value="Missouri">Missouri</option>
<option value="Montana">Montana</option>
<option value="Nebraska">Nebraska</option>
<option value="Nevada">Nevada</option>
<option value="New Hampshire">New Hampshire</option>
<option value="New Jersey">New Jersey</option>
<option value="New Mexico">New Mexico</option>
<option value="New York">New York</option>
<option value="North Carolina">North Carolina</option>
<option value="North Dakota">North Dakota</option>
<option value="Ohio">Ohio</option>
<option value="Oklahoma">Oklahoma</option>
<option value="Oregon">Oregon</option>
<option value="Pennsylvania">Pennsylvania</option>
<option value="Rhode Island">Rhode Island</option>
<option value="South Carolina">South Carolina</option>
<option value="South Dakota">South Dakota</option>
<option value="Tennessee">Tennessee</option>
<option value="Texas">Texas</option>
<option value="Utah">Utah</option>
<option value="Vermont">Vermont</option>
<option value="Virginia">Virginia</option>
<option value="Washington">Washington</option>
<option value="West Virginia">West Virginia</option>
<option value="Wisconsin">Wisconsin</option>
<option value="Wyoming">Wyoming</option>
</select>

</td>

<td>Zip Code:</td>
<td>
<input type="text" name="zip_code">
</td>
</tr>

<tr>
<td>Cumulutative GPA:</td>
<td><input type="text" name="gpa"></td>

<td>Major/Area of Study:</td>
<td><input type="text" name="major"></td>
</tr>

<tr>
<td>Twitter handle:</td>
<td>
<input type="text" name="twitter_handle">
</td>
</tr>

<tr>
<td colspan="2">
<p>Please describe any relevant teaching experience:</p>
<textarea rows="6" cols="45" name="teaching_experience">
</textarea>
</td>

<td colspan="2">
<p>Why do you want to join Moneythink?</p>
<textarea rows="6" cols="43" name="why_moneythink">
</textarea>
</td>
</tr>

</table>

<table>
<tr>
<td><input type="submit" value="Apply"></td>
<td><input type="reset" value="Clear"></td>
</tr>
</table>

</form>

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $('form').bind('submit', function(){
                $.ajax({
                    type: 'post',
                    url: "/InsertNewMentor.php",
                    data: $("form").serialize(),
                    success: function() {
                        alert("form was submitted");
                    }
                });
                return false;
            });
        });
    </script>

这是 InsertNewMentor.hp

<?php
$username="";
$password="";
$database="";

$first = $_POST['first'];
$last = $_POST['last'];
$email = $_POST['email'];
$gpa = $_POST['gpa'];
$year = $_POST['year_in_school'];
$address = $_POST['address'];
$phone = $_POST['phone'];
$gender = $_POST['gender'];
$ethnicity = $_POST['ethnicity'];
$year_in_school = $_POST['year_in_school'];
$suite_number = $_POST['suite_num'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip_code = $_POST['zip_code'];
$major = $_POST['major'];
$twitter_handle = $_POST['twitter_handle'];
$why_moneythink = $_POST['why_moneythink'];
$teaching_experience = $_POST['teaching_experience'];
$date = date("m/d/Y");

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$query = "INSERT INTO students VALUES ('','$address','$phone','$first','$last','$gender', '$ethnicity', '$year_in_school', '$email', '$suite_number','$city','$state','$zip_code','$major','$gpa','$twitter_handle','$why_moneythink','$teaching_experience','pending','$date')";
mysql_query($query);

mysql_close();
?>
4

2 回答 2

1

首先,serialize() 函数返回一个文本字符串,而不是一个值数组——更多信息请阅读jQuery 文档。 现在提交 ajax -

  $(function() {
        $('form').bind('submit', function(){
            $.ajax({
                type: 'post',
                url: "/InsertNewMentor.php",
                **data: {dataString:  $("form").serialize()} ,**
                success: function() {
                    alert("form was submitted");
                }
            });
            return false;
        });

如上所述,您必须发送 JSON 格式的数据(注意数据字段的变化)

在 PHP 代码中,发布时,您只发布您通过 ajax -ie-dataString 发送的字段。此外,在成功功能中,您可能会使用:

            success: function(result) {
                alert(result);
            }
        });

因此您可以调试任何错误(如果存在)。祝你好运。

于 2012-08-19T21:23:38.153 回答
1
 <form id="formPost" method="POST">
 <table cellpadding="10">

 <tr>
 <td><b>Chapter:</b></td>
 <td><input type="text" name="chapter"></td>
 </tr>

 <tr>
 <td>First Name:</td>
 <td><input type="text" name="first"></td>

 <td>Last Name:</td>
 <td><input type="text" name="last"></td>
 </tr>

 <tr>
 <td>Gender:</td>
 <td>
 <select name="gender">
 <option value="male">Male</option>
 <option value="female">Female</option>
 </select>
 </td>

 <td>Ethnicity:</td>
 <td>

 <select name="ethnicity">
 <option value="white">White/Caucasian</option>
 <option value="hispanic">Hispanic</option>
 <option value="asian">Asian/Pacific Islander</option>
 <option value="native_american">Native American Indian</option>
 <option value="other">Other</option>

 </td>
 </tr>

 <tr>
 <td>Year in School</td>
 <td>

 <select name="year_in_school">
 <option value="freshman">Freshman</option>
 <option value="sophomore">Sophomore</option>
 <option value="junior">Junior</option>
 <option value="senior">Senior</option>
 </select>

 </td>

 <td>Phone Number:</td>
 <td><input type="text" name="phone"></td>
 </tr>

 <tr>
 <td>Email Address:</td>
 <td><input type="text" name="email"></td>

 <td>Street Address:</td>
 <td>
 <input type="text" name="address">
 </td>
 </tr>

 <tr>
 <td>Apt/Suite:</td>
 <td>
 <input type="text" name="suite_num">
 </td>

 <td>City:</td>
 <td>
 <input type="text" name="city">
 </td>
 </tr>

 <tr>
 <td>State:</td>
 <td>
 <select name="state">
 <option value="Alabama">Alabama</option>
 .....
 </select>

 </td>

 <td>Zip Code:</td>
 <td>
 <input type="text" name="zip_code">
 </td>
 </tr>

 <tr>
 <td>Cumulutative GPA:</td>
 <td><input type="text" name="gpa"></td>

 <td>Major/Area of Study:</td>
 <td><input type="text" name="major"></td>
 </tr>

 <tr>
 <td>Twitter handle:</td>
 <td>
 <input type="text" name="twitter_handle">
 </td>
 </tr>

 <tr>
 <td colspan="2">
 <p>Please describe any relevant teaching experience:</p>
 <textarea rows="6" cols="45" name="teaching_experience">
 </textarea>
 </td>

 <td colspan="2">
 <p>Why do you want to join Moneythink?</p>
 <textarea rows="6" cols="43" name="why_moneythink">
 </textarea>
 </td>
 </tr>

 </table>

 <table>
 <tr>
 <td><input type="submit" value="Apply"></td>
 <td><input type="reset" value="Clear"></td>
 </tr>
 </table>

 </form>

 <script type="text/javascript"      src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
    $(function() {
        $('form').bind('submit', function(){
            $.ajax({
                type: 'post',
                url: "/InsertNewMentor.php",
                data: $("#formPost").serialize(),
                success: function() {
                    alert("form was submitted");
                }
            });
            return false;
        });
    });
</script>

尝试这个

于 2012-08-19T21:30:51.033 回答