Javascript 对HTML表的Ajax调用

Javascript 对HTML表的Ajax调用,javascript,html,ajax,jquery,combobox,Javascript,Html,Ajax,Jquery,Combobox,我已经有了一个函数,在这个函数中,我从数据库中获取数据,并在组合框更改事件中将其填充到HTML表中。基本上,我是使用ajax来完成这项工作的 但是每次我在组合框上调用数据库时都会发生更改,这是不高效的。所以,现在我决定先在页面加载时将数据填充到html表中,然后从html表中过滤出来,而不是每次都去数据库进行过滤 那么,在组合框更改事件中是否有任何方法可以从html表中过滤出数据呢?或者可以在html表上调用ajax 谢谢。您可以在每个上放置与组合框项目上的值相匹配的类。选择选项后,显示具有与所

我已经有了一个函数,在这个函数中,我从数据库中获取数据,并在组合框更改事件中将其填充到HTML表中。基本上,我是使用ajax来完成这项工作的

但是每次我在组合框上调用数据库时都会发生更改,这是不高效的。所以,现在我决定先在页面加载时将数据填充到html表中,然后从html表中过滤出来,而不是每次都去数据库进行过滤

那么,在组合框更改事件中是否有任何方法可以从html表中过滤出数据呢?或者可以在html表上调用ajax


谢谢。

您可以在每个上放置与组合框项目上的值相匹配的类。选择选项后,显示具有与所选选项的值匹配的类的所有行

<select id="options" multiple="multiple">
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
    <option value="black">Black</option>
</select>

<table>
    <tr class="red green">
        <td>red or green</td>
    </tr>
    <tr class="blue">
        <td>blue</td>
    </tr>
    <tr class="yellow black">
        <td>yellow or black</td>
    </tr>
    <tr class="blue yellow">
        <td>blue or yellow</td>
    </tr>
</table>

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
    $("select#options").change(function () {
        var selections = [];

        $(this).children(':selected').each(function (index, option) {
            selections.push(option.value);
        });

        console.log(selections);
        $("table tr").each(function (index, row) {
            $(row).hide();
            for(var i = 0; i < selections.length; i++) {
                if($(row).hasClass(selections[i])) {
                    $(row).show();
                    break;
                }
            }
        });
    });
</script>

那很有趣

您可以将与组合框项目上的值相匹配的类放在每个项目上。选择选项后,显示具有与所选选项的值匹配的类的所有行

<select id="options" multiple="multiple">
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
    <option value="black">Black</option>
</select>

<table>
    <tr class="red green">
        <td>red or green</td>
    </tr>
    <tr class="blue">
        <td>blue</td>
    </tr>
    <tr class="yellow black">
        <td>yellow or black</td>
    </tr>
    <tr class="blue yellow">
        <td>blue or yellow</td>
    </tr>
</table>

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
    $("select#options").change(function () {
        var selections = [];

        $(this).children(':selected').each(function (index, option) {
            selections.push(option.value);
        });

        console.log(selections);
        $("table tr").each(function (index, row) {
            $(row).hide();
            for(var i = 0; i < selections.length; i++) {
                if($(row).hasClass(selections[i])) {
                    $(row).show();
                    break;
                }
            }
        });
    });
</script>

那很有趣

最合适的解决方案取决于有多少数据以及是否需要不同的表联接

您可以将数据存储在JavaScript数组中,然后从该数组中检索所需的数据并构建HTML表

您可以使用库来方便对数据进行类似SQL的查询。看一看。例如:

var myList = [
        {FirstName:"Chris",LastName:"Pearson"},
        {FirstName:"Kate",LastName:"Johnson"},
        {FirstName:"Josh",LastName:"Sutherland"},
        {FirstName:"John",LastName:"Ronald"},
        {FirstName:"Steve",LastName:"Pinkerton"}
        ];

var exampleArray = JSLINQ(myList)
        .Where(function(item){ return item.FirstName == "Chris"; })
        .OrderBy(function(item) { return item.FirstName; })
        .Select(function(item){ return item.FirstName; });
如果您不想只使用页面ie提供所有数据,那么有很多数据,您可以使用AJAX根据需要检索数据并存储数据,这样,如果再次需要数据,您就可以在浏览器中找到它。换句话说,每次从实际数据库获取新数据时,都会将该数据添加到当前存储的数据中,直到最终在浏览器中获得数据库的完整副本

根据数据的复杂性,您需要想出一种方法来知道您是否已经在浏览器中获得了所需的数据,或者是否需要一个新的AJAX请求


如果您想要一个更具针对性的答案,可以编辑该问题以包含数据库架构的详细信息和一个示例查询。

最合适的解决方案取决于数据量以及是否需要不同的表联接

您可以将数据存储在JavaScript数组中,然后从该数组中检索所需的数据并构建HTML表

您可以使用库来方便对数据进行类似SQL的查询。看一看。例如:

var myList = [
        {FirstName:"Chris",LastName:"Pearson"},
        {FirstName:"Kate",LastName:"Johnson"},
        {FirstName:"Josh",LastName:"Sutherland"},
        {FirstName:"John",LastName:"Ronald"},
        {FirstName:"Steve",LastName:"Pinkerton"}
        ];

var exampleArray = JSLINQ(myList)
        .Where(function(item){ return item.FirstName == "Chris"; })
        .OrderBy(function(item) { return item.FirstName; })
        .Select(function(item){ return item.FirstName; });
如果您不想只使用页面ie提供所有数据,那么有很多数据,您可以使用AJAX根据需要检索数据并存储数据,这样,如果再次需要数据,您就可以在浏览器中找到它。换句话说,每次从实际数据库获取新数据时,都会将该数据添加到当前存储的数据中,直到最终在浏览器中获得数据库的完整副本

根据数据的复杂性,您需要想出一种方法来知道您是否已经在浏览器中获得了所需的数据,或者是否需要一个新的AJAX请求

如果您想要一个更为定制的答案,可以编辑该问题以包含数据库模式的详细信息和一个示例查询