0

我想知道是否有人可以帮助我。

一段时间以来,我一直在寻找一个教程/文章,它向我展示了如何使用 AJAX 设置表单并将用户输入提交到 mySQL 数据库。

虽然这并没有告诉我如何将数据发送到数据库,但这篇文章为我提供了一个很好的起点,它也给了我关于在线消息的“外观和感觉”,我想将其合并到我的表单中.

我现在已经开始调整示例脚本,但在将数据提交到我的数据库时遇到了困难。

在表格中,我更改了此部分:

   $.ajax( {
          url: contactForm.attr( 'action' ) + "?ajax=true",
          type: contactForm.attr( 'method' ),
          data: contactForm.serialize(),
          success: submitFinished
        } );

  }

 $.ajax( {
      url: contactForm.attr( 'savecontact.php' ) + "?ajax=true",
      type: contactForm.attr( 'post' ),
      data: contactForm.serialize(),
      success: submitFinished
    } );
  }

在 PHP 脚本中,我将其更改为现在阅读:

<?php

// Read the form values
$success = false;
$senderName = isset( $_POST['senderName']);
$senderEmail = isset( $_POST['senderEmail']);
$message = isset( $_POST['message']);


if ( $senderName && $senderEmail && $message ) {

    $query = "INSERT INTO `contact` (senderName, senderEmail, message) VALUES ('$senderName', '$senderEmail', '$message')";  
mysql_query($query) or die(mysql_error());
}           
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
  echo $success ? "success" : "error";
} else {
?>
<html>
  <head>
    <title>Thanks!</title>
  </head>
  <body>
  <?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
  <?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
  <p>Click your browser's Back button to return to the page.</p>
  </body>
</html>
<?php
}
?>

我遇到的问题是,在发送表单时,sending消息出现在屏幕上并继续停留在此消息上,并且没有数据发送到我的数据库,我必须承认我真的不知道为什么。

我很感激,由于我缺乏经验,可能有一种更简单的方法来实现我想要的结果,我可能看得太简单了,但我只是想知道是否有人可以看看这个并让我知道我要去哪里错了。

非常感谢和亲切的问候

4

2 回答 2

1

改变:

contactForm.attr( 'savecontact.php' )

至:

contactForm.attr( 'action' )

type: contactForm.attr( 'post' ),

type: contactForm.attr( 'method' ),

由于attr用于读取标签属性。在这种情况下,您的表单标签的action属性。

根据您的表单method属性,您将不得不使用$_POSTor$_GET数组来获取通过 AJAX 提交的值,或者您可能还想使用$_REQUEST(虽然不推荐的方式)

于 2012-06-25T15:11:54.760 回答
0

除了 Blaster 的回答,您的 php 代码还需要一些修复:

$senderName = isset( $_POST['senderName']);
$senderEmail = isset( $_POST['senderEmail']);
$message = isset( $_POST['message']);

在这里,您将这些变量设置为是否设置了 POST 变量的布尔值,而不是实际值。

$senderName = mysql_real_escape_string($_POST['senderName']);
$senderEmail = mysql_real_escape_string($_POST['senderEmail']);
$message = mysql_real_escape_string($_POST['message']);

这应该可以使事情正常进行,但容易受到 SQL 注入的影响。这些mysql_*函数已被弃用,建议学习 PDO 或 MySQLi 和准备好的语句。有关更多信息,请参阅PHP 手册中的此页面

于 2012-06-26T09:04:46.717 回答