JQuery AJAX response from PHP


JQuery AJAX response from PHP

我想从数据库中选择数据并使用PHP响应在div中显示它。我正在插入对我来说很好的数据,但不知道在PHP文件中做什么来响应以及如何在AJAX完成的函数中使用它。我在这里分享我的代码。请帮助我,如果你可以。

脚本:

$(document).ready(function(){
$("#submit_btn").click(function(){
        var all_ok = 1;
        if ($("#course_name").val() === '') {
            $('#course_name_error').show();
            all_ok = 0;
        } else {
            $('#course_name_error').hide();
        }
        if (all_ok === 1) {
            var username = $("#username").val();
            var password = $("#password").val();
$.ajax({
  method: "POST",
  url: "login.php",
  data: { name: username, password: password }
})
  .done(function(data) {
    $("#success").text("Data added Successfully!").show();
});
}
});

});

HTML部分:

<form >
Name:<input type="name" name="name" id="username" />
<p id="username_error" style="color:red; display:none;">Enter a username.</p>
Password:<input type="password" name="password" id="password" />
<p id="username_error" style="color:red; display:none;">Enter a password.</p>
<button type="button" value="subbtn" id="submit_btn">Submit</button>
</form>
PHP:

<?php 
    $name = $_POST['name'];
    $pass = $_POST['password'];
    if((isset($name) && isset($pass))){
         include 'connection.php';
         $sql = "INSERT INTO `log_in` (id, name, password) VALUES (NULL, '$name', '$pass');";
         if (mysqli_query($conn, $sql)) {
         } 
         else {
           die( "Error: " . $sql . "<br>" . mysqli_error($conn));
         }
    }

您可以从php中获取success的值

Jquery:

$.ajax({
  method: "POST",
  url: "login.php",
  data: { name: username, password: password },
  success: function (data)
    {
        var result=$.parseJSON(data);
        $("#success").text(data.content).show();
    }
});

您需要传递json_encode数组来响应ajax。PHP:

$result['content']="";
 $sql = "INSERT INTO `log_in` (id, name, password) VALUES (NULL, '$name', '$pass');";
if (mysqli_query($conn, $sql)) {
} else {
    $result['content']= "Error: " . $sql . "<br>" . mysqli_error($conn));
}
echo json_encode($result);

要做的三件事:-

1)在你的ajax调用添加数据类型:json如下所示

$.ajax({
  method: "POST",
  url: "login.php",
  dataType : 'json',
  data: {
     name: username,
     password: password
  }
})

2)在ajax PHP文件中,执行以下操作

<?php 
    $name     = $_POST['name'];
    $pass     = $_POST['password'];
    if((isset($name) && isset($pass))){
         include 'connection.php';
         $sql = "INSERT INTO `log_in` (id, name, password) VALUES (NULL, '$name', '$pass');";
         if (mysqli_query($conn, $sql)) {
            $response['status']   = "success";
            $response['statusMsg']   = "Data added Successfully!";
            $response['username'] = $name;
         } 
         else {
            $response['username']    = "";
            $response['status']      = "failed";
            $response['statusMsg']   = "Error: " . $sql . "<br>" .mysqli_error($conn);
        }
    }
    echo json_encode($response);

我创建了一个数组,其中包含我需要发送回(done/success)回调函数的所有参数。您可以将数组中的任意多个键值对添加回调函数。最后用json编码。

  • 你可以使用"success"回调而不是"done"回调,我在这里用"success"显示,我希望"done"也能起作用

    .success:功能(数据){

    if(data['status'] == "success"){

     $("#success").text(data['statusMsg']).show();
    
    其他

    } {

     $("#failed").text(data['statusMsg']).show();
    

    }});

  • 回答你的问题,在你的代码

    if (mysqli_query($conn, $sql)) {
      // you could use affected rows to see if the insert was a success
      //that would be your response, the program exit and 1 is send back
      exit(1);
    }
    

    回到你的javascript

    .done(function(data) {
      if(data == 1) {
        $("#success").text("Data added Successfully!").show();
      }
    });
    

    好吧,简单的回答没有评论关于其他事情,如"使用pdo代替mysqli"和其他问题的代码。

    编辑:

    为了从数据库接收数据,下面的代码处理您的查询结果。数据将作为对象。

    if(is_array($result) && count($result)) {
       exit(json_encode($result, JSON_FORCE_OBJECT);
    }
    

    在javascript代码中

    .done(function(data) {
       if(data) {
          // this will show you your object in the console for testing
          console.log(data);
       }
    });