0

我正在使用 Bootstrap 签名表单,并且正在使用以下代码:

 $.ajax({
   type: "POST",
   url: 'process/register.php',
   data: $(this).serialize(),
   dataType: "html",
   success: function(msg){
    alert('23');
   },
   error: function(error) {
     console.log("an error", error);
    }
 });

然而什么也没发生。表单有效,数据库有新添加,但回调永远不会运行。

根据要求,这是register.php代码:

$email = $_POST['Email_address'];
$pword = $_POST['Password'];

$pword = md5($pword);

$result = $db->query("INSERT INTO users (`name`,`password`) VALUES ('" . $email . "','" . $pword . "')");
if($result != FALSE){
    echo "true";
} else {
    echo "false";
}
echo "!!!!!!!!!!";

如果有帮助,这里是 HTML 表单代码:

  <form class="form-signin" method="post" enctype="multipart/form-data" action="" id="regForm">
    <h2 class="form-signin-heading" style="width:500px;">Register</h2>
    <input type="text" class="form-control" placeholder="Email address" name="Email_address" id="Email_address" autofocus required>
    <input type="password" class="form-control" placeholder="Password" name="Password" id="Password" required><br>
    <button class="btn btn-lg btn-primary btn-block" type="submit" id="regSubmit">Register</button>
  </form>
4

3 回答 3

0

使用 json !:)

$.ajax({
       type: "POST",
       url: 'process/register.php',
       data: $(this).serialize(),
       dataType: "json",
       error: function(error) {
         console.log("an error", error);
        }
     }).done(function(json){
      // your code here
    });

服务器端 :

$email = $_POST['Email_address'];
$pword = $_POST['Password'];

$pword = md5($pword);


$result = $db->query("INSERT INTO users (`name`,`password`) VALUES ('" . $email . "','" . $pword . "')");

$output = new stdClass();
if($result != false){
    $output->status="success";
} else {
    $output->status="fail";
    $output->message="Wrong password";
}
print json_encode($output);
于 2013-10-19T22:41:57.087 回答
0

将 JavaScript 更改为:

 $.ajax({
   type: "POST",
   url: 'process/register.php',
   data: $(this).serialize(),
   dataType: "html",
   async:false,
   success: function(msg){
    alert('23');
   },
   error: function(error) {
     console.log("an error", error);
    }
 });

解决了。(添加行async:false)。不过,它还是焕然一新。事实证明,真正的问题是页面正在刷新(async:true我认为页面在回调运行之前刷新,更改它会使回调首先运行)。因此,这解决了它,并且async:false不需要:

$("#regForm").submit(function () {
     $.ajax({
           type: "POST",
           url: 'process/register.php',
           data: $(this).serialize(),
           dataType: "html",
           success: function(msg){
                alert('23');
           },
           error: function(error) {
                console.log("an error", error);
           }
     });
     return false;
});

return false在提交功能的末尾添加)。

于 2013-10-19T22:51:07.547 回答
-1

我想你echo 'any string';在你的php中没有做对吗? function(msg)期望得到一些回报,甚至只是 echo 1 表示成功(添加到 db )或 echo 0 (插入失败)

所以你可以在你的成功处理程序中做(注意:ajax连接到php并expexts返回值)=成功

success: function(msg) {
    if(msg == 'success') { 
        alert('yay'); 
    }
    else { 
        alert('fail');
    }
}
于 2013-10-19T22:26:47.713 回答