我想从数据库中选择数据并使用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
的值
$.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);
}
});