php - 通过json ajax获取多个php数据同名
问题描述
我正在进行实时搜索,我需要使用 json 将 php 数据传输到 ajax,但问题是我无法传递包含 2 个或更多相同值的数组,这是 php 代码:
<?php
class search{
public function gettingvalues($search_value){
require_once('db_conx.php');
$dir = "http://localhost/usersimage/";
$sql = "SELECT name,img,username FROM users WHERE username like '$search_value%' || name like '$search_value%'";
$query = mysqli_query($conx,$sql);
if ($query) {
if (mysqli_num_rows($query) > 0) {
while ($row = mysqli_fetch_array($query)) {
$img = $row['img'];
$name = $row['name'];
$username = $row['username'];
$json = array('img' => $img, 'name' => $name, 'username' => $username);
echo json_encode($json);
}
}
}
}
}
?>
这是索引代码:
<?php
if (isset($_POST['data'])) {
require('search.php');
$search = new search;
$search->gettingvalues($_POST['data']);
header('Content-Type: application/json; charset=utf-8');
die();
}
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('input').keyup(function(){
var value= $('input').val();
$.ajax({
type: "POST",
url: "",
data: {data: value},
datatype: "json",
success: function(json_data){
$('#feedback').html(json_data.name);
}
});
});
});
</script>
<input type="text" name="search" placeholder="looking for?">
<div id="feedback"></div>
所以,如果我的数组包含 2 个或更多相同的名称,ajax 不会得到任何数据,我希望有人能回答。
解决方案
您应该在搜索函数中创建包含所有结果的数组,然后在 ajax 响应循环结果中获取所有名称并用逗号分隔打印。
搜索功能
<?php
class search{
public function gettingvalues($search_value){
require_once('db_conx.php');
$dir = "http://localhost/usersimage/";
$sql = "SELECT name,img,username FROM users WHERE username like '$search_value%' || name like '$search_value%'";
$query = mysqli_query($conx,$sql);
$results = []; //<!---
if ($query) {
if (mysqli_num_rows($query) > 0) {
while ($row = mysqli_fetch_array($query)) {
$img = $row['img'];
$name = $row['name'];
$username = $row['username'];
$json = array('img' => $img, 'name' => $name, 'username' => $username);
$results[] = $json; //<!---
}
}
}
echo json_encode($results); //<!---
}
}
?>
阿贾克斯
<script type="text/javascript">
$(document).ready(function(){
$('input').keyup(function(){
var value= $('input').val();
$.ajax({
type: "POST",
url: "",
data: {data: value},
datatype: "json",
success: function(json_data) {
var names = [];
$.each(json_data, function(index, element) {
names.push(element.name)
})
$('#feedback').html(names.join(','));
}
});
});
});
</script>
<input type="text" name="search" placeholder="looking for?">
<div id="feedback"></div>
推荐阅读
- javascript - React hooks:从子组件中获取当前值,无需重新渲染
- postgresql - 查找 postgresql 副本服务器
- android - 在android studio问题中以编程方式更改按钮的文本
- imagemagick - 如何解决 TYPO3 上的缩略图显示问题
- drake - 了解带有自由浮动体和四元数状态的线性化
- java - 如何从外部库创建用于测试的对象
- json - 从视图中传递 JsonData 并在视图中接收 JSON 返回值
- amazon-web-services - 控制台中的 Amazon Cognito 用户池设备跟踪配置如何映射到相应的 CloudFormation 模板配置?
- php - 带有 PHP 和服务帐户的 Google 日历 API 将不再工作
- powershell - 从 XML 中的数据中搜索并获取内容,然后使用 powershell 将该值放在另一个标签中