【问题标题】:HTML/Javascript search function with AJAX带有 AJAX 的 HTML/Javascript 搜索功能
【发布时间】:2012-06-09 11:15:26
【问题描述】:

我创建了一个网页,希望用户能够搜索存储在 CSV 文件中的单词/术语,如果找到该术语,则该行条目的完整行将返回并显示给用户(最好是表格格式,否则一个文本区域就可以了)。

但是我需要使用 AJAX 来做这件事,而且我也不能使用 PHP(很遗憾,否则我不会问这个问题)。

到目前为止,我有一个表格/输入/按钮,我也有读取文件的代码,但我有点坚持将两者结合在一起。我知道这应该是一件容易的事,但我花了很多时间浏览教程和在线问题,但找不到类似的东西。

如果有人知道任何涵盖此内容的教程,或者可以帮助提供下面的代码,我们将不胜感激。

  <table>        
     <tr><td>Enter Search Term:
     <input type="text" name="searchword" />
     <input type="button" name="searchbutton" value="Search" onclick="contentDisp();">
     </td></tr>
     <tr><td><textarea id="contentArea" rows="40" cols="60"></textarea></td></tr>
    </table>  //currently using text area but ideally this would be displayed in a table

    <script type="text/javascript">
    function contentDisp()
        {
            $.ajax({
                url : "file.csv",
                success : function (data) {
                    $("#contentArea").html(data); // I THINK SOMETHING NEEDS TO GO IN HERE, WHICH WILL GRAB THE SEARCH TERM ABOVE AND THEN ONLY DISPLAY FILE CONTENTS USING THAT TERM, POSSIBLY 'CONTAIN' */
                }
            });
        }  
    </script>

【问题讨论】:

    标签: javascript html ajax search html-table


    【解决方案1】:

    可以通过 JavaScript 严格执行此操作,使用一些 strpos 和 indexOf 函数(indexOf 是起点,而另一个将寻找字符串分隔符)。

    如果你觉得舒服的话,也可以用 php 来完成这个任务,如果你受到域源限制的限制,看看 JSONP,它代表 JSON with Padding - 这基本上意味着你'需要将结果包装在 JavaScript 函数中。

    祝你好运。

    【讨论】:

    • 谢谢,我在 JSON 上看到了一些东西,所以会再看看。我知道怎么用 PHP 做,但是由于外部限制不能使用 PHP。
    【解决方案2】:

    用户正则表达式来查找您的字符串并解析 CSV 数据中找到的行。

    http://www.w3schools.com/jsref/jsref_obj_regexp.asp

    【讨论】:

      【解决方案3】:

      HTML

      <input type="text" id="text" />
      <input type="submit" id="btnsubmit" />
      

      脚本

      $(function(){
      $('#btnsubmit').on('click', function(){
          var csv = $.ajax('text.csv');
          csv.done(function(data){
              var str = data.split(',');
              var value = $('#text').val();
              $.each(str, function(index, item){
                  if(item.match(value)){
                      console.log(item) //Output
                  };
              })
          })  
      })
      });
      

      CSV

      Presidency ,President ,Wikipedia Entry,Took office ,Left office ,Party ,Portrait,Thumbnail,Home State
      

      【讨论】:

      • 谢谢你,但不幸的是对我不起作用。我正在使用 netbeans,但我不确定该代码是否适用于访问文件。也不确定console.log 的结果,因为我不确定它如何显示结果。该索引也作为错误的未使用值出现。你测试过这个吗?您是否在使用任何其他库/插件?
      • console.log 将在 firebug 或 web 开发者控制台中打印输出。它与您使用的代码相同。 var csv = $.ajax('text.csv'); - 从 csv 中获取结果。而不是使用成功 :function() -> 我使用了 csv.done。 api.jquery.com/jQuery.ajax 。我用过 jquery 1.7.2。它与 IDE(netbeans、dreamweaver 等)无关。
      【解决方案4】:

      当 javascript 已经有用于匹配字符串的内置函数时,为什么还要使用 strpos 和 indexOf?

      http://jsfiddle.net/AWZg8/

      【讨论】:

      • 嗨。我试图了解您在链接中发布的内容
      • function contentDisp(){ //jQuery.ajax({ //假设这个被调用 //url : "file.csv", //success : function (data) { //现在让我们说数据得到: var data = "one;two;three;four;"; result = findIn(jQuery("#searchword").val(), data); makeList("#contentArea", result);
      • 我不确定您注释掉读取 csv 文件的方式。你是说我应该在那里调用该文件,因为没有其他提及它在其他任何地方被引用。您的示例是否适用于带有 ajax 的 csv 文件?还是只是一个建议?
      • 操作。很抱歉延迟回答;我是新来的什么的。所以“jQuery.ajax({ url : "file.csv", success : function (data) {" 部分不应被注释,将数据放入列表的代码将在“成功”部分中调用ajax 调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2017-03-21
      • 2016-10-07
      • 2015-04-06
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多