如何使用 ajax 和 php 从 db 中检索数据?
Posted
技术标签:
【中文标题】如何使用 ajax 和 php 从 db 中检索数据?【英文标题】:How can I retrive data from db with ajax and php? 【发布时间】:2015-09-05 05:09:47 【问题描述】:我正在尝试在提交表单之前检查一个字段是否刚刚出现在数据库中。
所以我将 keyup 事件添加到该字段以从 db
和 ajax
获取数据。
所以我在表单中添加了这段代码:
$(document).ready(function ()
$("#matricola").keyup(function ()
$.ajax(
type:"get",
url: "getMatricolaAjax.php",
data: 'type':'user', 'matricola':$("#matricola").val(),
dataType: "text",
success: function(result)
console.log("OK");
$("#matricola").val("");
alert("Matricola "+ result +" già presente!!");
,
error: function()
console.log("KO");
);
);
);
这是我的getMatricolaAjax.php
:
<script src='js/jquery-2.1.4.js' type="text/javascript"></script>
<?php
require_once 'config.php';
require_once FUNCTION_PATH.'/dbFunction.php';
if($_GET['type'] == "user")
$queryMatricolaMatch = 'select * from user where matricola = "'.$_GET['matricola'].'"';
else
$queryMatricolaMatch = 'select * from 150ore where matricola = "'.$_GET['matricola'].'"';
echo $queryMatricolaMatch;
$conn = dbConnect($USERDB, $PASSWORDDB, $NAMEDB);
$matricola = dbQueryGetResult($queryMatricolaMatch);
dbDisconnect($conn);
echo $matricola;
它适用于一半,因为在result
我从getMatricolaAjax.php
获得所有html
代码..
为什么??
我怎样才能只得到matricola
??
【问题讨论】:
我不确定您的 dbQueryGetResult() 函数是如何设置的,但通常查询 mysql 数据库会返回一个数组(您可能认为是“所有 html 代码”)所以如果您想获得特定的结果,匹配时需要指向该数组键 如您所见,result
变量包含您使用 ajax 调用的 php 脚本的输出。如果您需要其他输出,您应该修改您的脚本或制作另一个仅返回您需要的脚本。
getMatricolaAjax.php 中不应包含任何输出,例如脚本标签、样式标签。您只需要通过 php 回显。
getMatricolaAjax.php 中不需要任何 HTML 标签或 JavaScript 。所以删除它们,然后让我们知道你得到的输出
@RNKushwaha 好的!我删除了所有导入和回显。但现在我加载资源失败:服务器响应状态为 500(内部服务器错误),因此 ajax 的响应进入错误而不是成功...为什么?
【参考方案1】:
评论或删除dataType: "text"
,然后重试。
$.ajax(
type:"get",
url: "getMatricolaAjax.php",
data: 'type':'user', 'matricola':$("#matricola").val(),
// dataType: "text",
success: function(result)
console.log("OK");
$("#matricola").val("");
alert("Matricola "+ result +" già presente!!");
,
或者你可以在 PHP 中使用 json_encode() 来获取 JSON 对象数组的数据。
【讨论】:
【参考方案2】:在提交表单之前,您应该使用 POST 检查数据库中的值。
$(document).ready(function ()
$("#matricola").keyup(function (e)
var thevalue = $(this).val();
$.post('getMatricolaAjax.php','type':'user','matricola':thevalue,
function(data)
console.log("OK");
$("#matricola").val("");
alert("Matricola "+ data +" già presente!!");
);
);
);
还有php文件
<?php
require_once 'config.php';
require_once FUNCTION_PATH.'/dbFunction.php';
$conn = dbConnect($USERDB, $PASSWORDDB, $NAMEDB);
if($conn->real_escape_string($_POST['type']) == "user")
$queryMatricolaMatch = 'select * from user where matricola = "'.$conn->real_escape_string($_POST['matricola']).'"';
else
$queryMatricolaMatch = 'select * from 150ore where matricola = "'.$conn->real_escape_string($_POST['matricola']).'"';
$matricola = dbQueryGetResult($queryMatricolaMatch);
dbDisconnect($conn);
echo $matricola;
这应该可以,但我不知道 dbQueryGetResult 应该做什么,所以你也应该发布它。 注意:如果您使用 PDO 编辑删除 'real_escape_string' 函数并使用其他清理方法
【讨论】:
以上是关于如何使用 ajax 和 php 从 db 中检索数据?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery .ajax 从 mySQL DB 中检索记录
使用 Jquery、AJAX 和 PHP 从 MySQL 数据库中检索数据
jquery - 如何使用通过 AJAX 从 MySQL 和 PHP 检索的数据将图像添加到 Select2 下拉列表?
如何在 laravel php 中使用 ajax 根据日期范围从 mysql 数据库中检索数据?