【问题标题】:No values being sent to my php script from ajax [closed]没有从 ajax 发送到我的 php 脚本的值 [关闭]
【发布时间】:2013-05-31 15:44:23
【问题描述】:

好的,所以我正在尝试制作一个 [相对] 简单的联系表单,该表单使用 ajax 和 php 在表单提交后将该数据写入数据库。我的 javascript 或 php 中没有任何错误,但问题似乎在于 php 没有接收到 ajax 发送的数据。 HTML

<form action="" method="POST" id="contact">
<table>
<tbody>
<tr>
<td><h2>First Name: </h2></td>
<td><h2>Last Name: </td>
<td><h2>Email Address: </td>
</tr>
<tr>
<td><input type="text" name="first_name" placeholder="Johnny"></td>
<td><input type="text" name="last_name" placeholder="Appleseed"></td>
<td><input type="text" name="email" placeholder="johnny@email.com"></td>
</tr>
<tr>
<td><h2>Street Address:</h2></td>
<td><h2>What's Dirty?</h2></td>
</tr>
<tr>
<td><input type="text" name="address"></td>
<td>
<select name="job" form="contact">
<option value="house">House</option>
<option value="roof">Roof</option>
<option value="garage-shed">Garage/shed</option>
<option value="other">Other</option>
</select>
</td>
</tr>
<tr>
<td><h2>Message: </h2></td>
</tr>
</tbody>
</table>
<textarea name="message" cols="80" rows="5"></textarea>
<input type="submit" id="submit" name="send" value="Send!" class="send-button">
</form> 

Javascript

<script type="text/javascript">
$("#submit").click(function() {
var data_string = $("#contact").serialize();
$.ajax({
type: "POST",
url: "database.php",
data: data_string,
success: function(){
alert(data_string);
}
});
});
</script>

PHP/MySQL

<?php 
$hostname = "foobase.db.9999.foobase.com";
$username = "foobase";
$dbname = "foobase";
$password = "password";
$con =mysqli_connect($hostname, $username, $password);        
//Connecting to  database
mysqli_connect($hostname, $username, $password) OR DIE ("Unable to 
connect to database! Please try again later.");
mysqli_select_db($con, $dbname);

if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else {
echo "success!";
}

//adding values into the database.
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$wholename = $fname . " " . $lname;
$email = $_POST['email'];
$address = $_POST['address'];
$job = $_POST['job'];
$message = $_POST['message'];
mysqli_query($con, "INSERT INTO client_base (Name, Email, Address, Job)VALUES                       ('$wholename', '$email', '$address', '$job')");

【问题讨论】:

  • 你准备好mysql_injections了吗?在这里查看stackoverflow.com/questions/60174/…
  • database.php 的顶部添加print_r($_POST); 以查看发布的信息。您可能还想在 JS 提交函数的末尾添加 return false;
  • Nelson 的回答看起来不错。为了调试这个,我会打开我的浏览器 AJAX 查看器(对我来说,Firefox/Firebug - Chrome 和 Safari 内置了一个)。然后,激活 AJAX 操作,并在实时查看器中观看。如果事件没有被捕获并停止,则继续正常提交,AJAX操作将被中断。

标签: php javascript html mysql ajax


【解决方案1】:

在您的 javascript 中,更改以下行:

$("#submit").click(function() {

对于这个:

$("#submit").click(function(e) {
   e.preventDefault();

为了防止你的外部 &lt;form&gt; 被提交,就像你使用 ajax 一样。

【讨论】:

  • @Marcelo 我在其中添加了该行,并且还使用了 halfer 的建议在实时查看器中观看提交,database.php 现在正在接收数据,但该数据没有被传输到我的数据库。当我在浏览器实时查看器中查看时,database.php 文件发送:“Array () 成功!”你可能会说,我是 php 和 mysql 的新手,我不熟悉调试和类似的东西。
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 2014-02-27
  • 2014-04-16
  • 2021-05-24
  • 2013-12-24
  • 2015-06-26
  • 2022-11-01
  • 1970-01-01
相关资源
最近更新 更多