【问题标题】:mysql result in javascript global arraymysql导致javascript全局数组
【发布时间】:2013-08-24 06:45:27
【问题描述】:

我需要在 JS 数组中有一个 MySQL 表结果,以便在输入文本框中时可以搜索名称。我的意思是,假设我有一个带有一些名称的表,现在当请求页面时,它应该使用来自 MYSQL 的名称列表填充一个 div,该 div 需要有一个输入框,当输入首字母时,该下面的列表应该找到与关键字匹配的名称,类似于搜索。

为此,我认为我需要将 mysql 结果存储在 JS 数组中,以便在文本框的 onkeyuponkeypress 事件中,它应该从数组项中搜索匹配结果并填充仅包含这些项目的列表。

我知道,我必须在 document.ready 上发出 ajax 请求才能从数据库中获取结果,但不知道如何将其存储在数组中,然后在文本框事件中搜索。

【问题讨论】:

  • 在 PHP(或您使用的任何服务器端语言)中,获取查询结果并从中创建一个数组(根据需要对其进行结构化),将其编码为 JSON 并返回。回到客户端,parse 响应,即将 JSON 转换为带有 JSON.parse 的 JS 数组/对象,您就完成了。查看this question 或谷歌php javascript ajax json example 中的代码。如果您不知道如何查询数据库,当然也必须学习。

标签: javascript mysql arrays


【解决方案1】:

你需要这样的东西:

这样的输入:

<input type="text" onkeyup="userscount('getusers.php')" name="name" /> 
<div id="shownames"></div>

这里是用于 ajax 请求的 js,我为此使用 jquery:

function userscount(url)
{

        var val = $('[name="name"]').val()
        $.ajax({
                type:'post',
                data : {name: val },
                cache: false,
                url: url,
                dataType : 'json',
                success: function(resp){
                  $('#shownames').append(resp);
               }
               });


}

你可以使用ul li来追加

这里是php代码(getusers.php):

<?php
if(isset($_POST['name']))
{
  $result = // execute your query 

   echo json_encode($result)
}

?>

有了这个,你不需要一个 js 数组来搜索你直接在你的数据库中搜索

【讨论】:

  • 这就是我的意思,如果我在每个键入的字符上查询数据库会不会更慢和效率低下?因为名称列表在用户搜索时不会真正改变,所以我认为将它存储在一个数组中一次然后搜索它以填充结果会是一个更好的主意
  • 您数据库中的记录永远不会改变?
  • @coder101:这完全取决于您拥有多少数据。如果您只有 10 个条目,请继续获取所有条目。如果您有数千个,请为每个搜索词提出请求。不要在每次按键时都拨打电话,而是在用户完成输入时拨打电话。然后,您可以在客户端缓存结果。
  • 知道了,你可以在文档准备好时发送一个 ajax 请求,然后你就可以做你想做的任何事情
  • @babakfaghihian 这就是我在问题中提出的关于如何将 ajax 响应(名称列表)放入数组中的问题,然后在用户在顶部的文本框中键入时搜索该数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2011-05-05
  • 1970-01-01
  • 2022-10-20
  • 2011-01-05
  • 1970-01-01
  • 2019-01-30
相关资源
最近更新 更多