请求成功发送时,未调用Ajax成功

时间:2018-07-25 09:57:26

标签: php ajax

这是我的代码:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script>
  $(document).ready(function() {
    $("#btnSubmit").click(function() {
      $.ajax({
        type: "POST",
        url: "deepak.php",
        datatype: "html",
        data: 'Name=' + $("#name").val() + '&Email=' + $("#email").val() + '&password=' + $("#password").val() + '&cnfpassword=' + $("#cnfpassword").val(),
        success: function(result) {
          if (result == 'success') {
            alert("Ajax Successfully Executed")
          }
        }
      });
    });
  });
</script>

在我的php代码中,通过echo函数生成了“成功”消息。 ajax可以正常工作,它发出所需的请求。唯一不起作用的部分是success

这是我的服务器端代码:

<?php //Database credentials $dbHost     = 'localhost'; $dbUsername = 'root'; $dbPassword = ''; $dbName     = 'fmc';

//Connect and select the database $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

if($db){
    echo 'connected'; } else {
    echo "disconnected"; }


 $name = $_POST['Name'];  $email = $_POST['Email'];  $password = $_POST['password'];  $cnfpassword = $_POST['cnfpassword'];  

    $sql = "INSERT INTO seeifyouqualify (name, email, password, cnfpassword) VALUES ('$name', '$email', '$password', '$cnfpassword')";
    $query = mysqli_query($db, $sql);


 if(mysqli_query($db, $sql)){
    echo "success";  } ?>

2 个答案:

答案 0 :(得分:0)

您可以发送如下序列化的表格数据,而不是发送所有输入数据:

<script>
  $(document).ready(function() {
    var formData = $("form#yourformId").serialize();
    $("#btnSubmit").click(function() {
      $.ajax({
        type: "POST",
        url: "deepak.php",
        datatype: "html",
        data: {'data_name': formData},
        success: function(result) {
          if (result == 'success') {
            alert("Ajax Successfully Executed")
          }
        }
      });
    });
  });
</script>

我在上面所做的就是发送带有名称的数据,因为我们必须像这样在php中捕获它:

<?php

    if(isset($_POST['data_name'])){
        //do something....
    }

?>

使用if(isset(...))很重要,因为假设某人在未提交表单的情况下转到了您的php页面,因此php不会知道$name = $_POST['name'];是什么意思

现在,最后一件事是,如何使用序列化数据:

<?php

    if(isset($_POST['data_name'])){

        $get = explode('&', $_POST['data_name'] ); // explode with and

        foreach ( $get as $key => $value) {
            $valn[ substr( $value, 0 , strpos( $value, '=' ) ) ] =  substr( $value, strpos( 
            $value, '=' ) + 1 ) ;
        }
        // access your query param
        $name = $valn['name'];
        $email = $valn['email'];
        $password = $valn['password'];
        $cnfpassword = $valn['cnfpassword'];

    }

?>

答案 1 :(得分:0)

根据您的JavaScript,如果您的结果为String('success'),则仅会调用警报。 但是在您的php代码中,建立连接后以及执行查询后,您会多次回显输出。因此,由于ajax响应不符合您的条件,您的alert()无法正常工作。