gpt4 book ai didi

javascript - jquery/ajax 使用用户输入作为条件运行 php 查询,然后显示查询结果而不刷新页面

转载 作者:行者123 更新时间:2023-11-29 07:28:12 24 4
gpt4 key购买 nike

我花了过去 24 小时试图找到答案,虽然存在类似的问题,但答案似乎比我的用例更复杂(所以我不明白),或者我发现低质量的问题/答案。

我的标题确实说明了一切,除了我的代码,但要重申完整的句子:我知道如何使用 jquery 通过用户输入和 php 更新 mysql 数据库字段。另外,我知道如何使用ajax检索php查询结果。我不知道如何同时执行这两件事:使用 ajax 将用户输入设置为 php 查询的参数,然后提取该查询的结果。

我认为一旦我分别弄清楚这些事情就会很简单,但我根本就不太理解 .ajax(),这就是我在这里的原因。

这是我的代码:

用户输入页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Pull from query</title>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">

<style>

#topRow {
margin-top:40px;
text-align:center;
}
</style>
</head>
<body>

<div class="container contentContainer" id="topContainer">
<div class="row">

<div class="col-md-6 col-md-offset-3" id="topRow">
<textarea class="form-control"></textarea>
</div>

<div class="row">
<div class="col-md-6 col-md-offset-3" id="output" style="border:1px solid #000000;height:40px;margin-top:40px;text-align:center;">
</div>
</div>

</div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script>

// "keyup" RUNS FUNCTION EVERY TIME USER USES KEYBOARD
$("textarea").keyup(function() {

$('#output').html("loading...");

var email = $('textarea').val();

$.post("5Query.php", {email:$('textarea').val()} );

// ACCESS QUERY RESULTS (HOPEFULLY!)
$.ajax({
url: '5Query.php',
dataType: 'json',
success: function(data)
{
var result = data
$('#output').html(result);
}
});

})

</script>
</body>
</html>

在单独的文件中进行 PHP 查询

<?php

// SET DATABASE LINK AS A VARIABLE THAT CAN BE USED WHEN RUNNING QUERIES
$link = mysqli_connect(...connection stuff...);

if (mysqli_connect_error()) {
die("Could not connect");
}

// SELECT all fields FROM databasename
$query = "SELECT * FROM users WHERE email='".mysqli_real_escape_string($link, $_POST['email'])."'";

// CREATE ARRAY CONTAINING ALL VALUES FOR ROW MATCHING QUERY CRITERIA
$row = mysqli_fetch_array(mysqli_query($link, $query));
$name = $row['name'];
$error = 'I could not find that user name';

//echo json_encode($row);

if($row){
echo json_encode($name);
} else {
echo json_encode($error);
}


?>

如您所见,我尝试使用 $.post() 设置查询参数,因为这是我知道的唯一方法,但它确实返回任何结果。当我将一个值硬编码到我知道位于 mysql 数据库表中的 php 查询中时,它不会尝试将用户输入发布到查询中,而是会正确返回并显示查询结果。

我希望你们中的一些聪明人能够发现像我这样的新手看不到的明显东西...我绝对觉得一切都应该在 .ajax() 内发生,但我只是不知道如何做到这一点,并且在任何地方都很难找到答案。

请让我知道如何改进我的问题,或者我可以在哪里找到答案(尽管请记住,我是 ajax 的 super 新手,所以我完全有可能已经看到答案并且刚刚做了不知道我在看什么)。

最佳答案

删除$.post,然后像这样更改ajax

$.ajax({
url: '5Query.php',
type: 'post',
dataType: 'json',
data: {
email: $('textarea').val()
},
success: function(data) {
var result = data
$('#output').html(result);
}
});

在 php 页面中,您可以像这样访问该变量 $_POST['email']

关于javascript - jquery/ajax 使用用户输入作为条件运行 php 查询,然后显示查询结果而不刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com