【问题标题】:Automatic fill a table with data using JavaScript and JSON使用 JavaScript 和 JSON 自动用数据填充表格
【发布时间】:2014-05-03 07:32:00
【问题描述】:

我想在一夜之间在表格中测试我的字段。我有一个带有按钮输入的表,我想使用 JSON 传递所有变量。这是我所拥有的样本。我在 Google 上搜索过,但没有找到我想要的东西。

<table style="border-style:solid;display: inline-block; " >
    <tr>
        <td>Person First Name</td><td><input type="text" id="searchPersonFName"/></td>
    </tr>
    <tr>
        <td>Person Last Name</td><td><input type="text" id="searchPersonLName"/></td>
    </tr>
    <tr>
        <td>Person Telephone Number</td><td><input type="text" id="searchPersonNumber"/></td>
    </tr>
    <tr>
        <td>Person Company Name</td><td><input type="text" id="searchPersonCompName"/></td>
    </tr>
    <tr>
        <td>Person Fax</td><td><input type="text" id="searchPersonFax"/></td>
    </tr>
    <tr>
        <td>Email Address</td><td><input type="text" id="searchPersonEmail"/></td>
    </tr>
    <tr>
        <td>Prov/State</td><td><input type="text" id="searchPersonProvState"/></td>
    </tr>
    <tr>
        <td>Postal Code</td><td><input type="text" id="searchPersonPostalCode"/></td>
    </tr>
    <tr>
        <td>City</td><td><input type="text" id="searchPersonCity"/></td>
    </tr>
    <tr>
        <td>Country</td><td><input type="text" id="searchPersonCountry"/></td>
    </tr>
</table>
<input type="button" id="btnSearchPerson" onclick="searchPerson();" value="Search Person" />

我基本上希望这个按钮被按下很长时间,然后用这个填充所有填充的:

var filterList = new Array();

        var company1Filter = {
            PersonFName :  ''
            PersonLName : '',
            etc..
        }
        filterList.push(company1Filter);

我对此很陌生,如果我缺少任何信息,请告诉我,我可以进一步解释。

【问题讨论】:

  • JSON 来自哪里?您是通过 AJAX 加载它还是将其硬编码到页面中?
  • 我可能已经明白了。您是否希望用户填写表格,然后将该信息作为 JSON 发送到某处?还是您想加载 JSON 数据并使用它来填充表格?
  • @JamesDuffy 我想在夜间自动填充所有这些输入,没有用户坐在那里,我只想使用 Json 向它们传递一些随机变量。这更清楚吗?然后 javascript 自动按下该按钮以提交我使用 Json 提供的虚假数据
  • 您正在尝试自动提交重复的表单?您是将数据提交到托管脚本的同一个域还是其他服务器?
  • @JamesDuffy 是的,在同一台服务器上重复提交,使用我在 json 中的随机输入

标签: javascript html json


【解决方案1】:

我想这就是你要找的东西:

工作小提琴: http://jsfiddle.net/HRyYs/

var INTERVAL = 3000; // submission will fire every xxxx milliseconds

function searchPerson() {
    // not sure what you want to happen here, or if this is already defined in your code or what... 
}

// fill this JSON object with all your data
var filterList = [{
    PersonFName: 'Steve',
    PersonLName: 'Stevenson',
    PersonNumber: '123',
    PersonCompName: 'a',
    PersonFax: '456',
    PersonEmail: 'a@a.com',
    PersonProvState: 'NY',
    PersonPostalCode: '123',
    PersonCity: 'NYC',
    PersonCountry: 'USA'
}, {
    PersonFName: "Greg",
    PersonLName: "Gregory"
    // etc...
}];

// fills the form inputs with the values from the JSON
var fillForm = function (obj) {
    $.each(obj, function (key, val) {
        $("#search" + key).val(val);
    });
};

var i = 0;
setInterval(function () {
    if (i === filterList.length) {
        console.log("Done.");
        return;
    }
    $("input").val(""); // clear previous input
    fillForm(filterList[i]);
    searchPerson(); // or $("#btnSearchPerson").click();
    console.log("Submitted. Count: " + i);
    i++;
}, INTERVAL);

INTERVAL 更改为您希望提交的触发频率,以毫秒为单位。 (我设置为 3 秒)。

【讨论】:

  • 这正是我正在寻找的,是否可以创建一个循环,所以每次完成时,所有的过滤器列表都会重新开始?一直坚持到我停下来?
  • 您希望它一遍又一遍地提交相同的数据吗?是的,在这种情况下,只需将 setInterval 函数的前几行更改为:if (i === filterList.length) { i = 0; }
  • 非常感谢詹姆斯,它很完美,那么 var fillForm = function (obj) { $.each(obj, function (key, val) { $("#search" + key ).val(val); }); };作品?它如何知道如何将每个字段与这些变量进行匹配?
  • api.jquery.com/jQuery.each $.each() 获取 javascript 对象中的每个键/值对并对它们执行一些操作。在我们的例子中,像PersonFName 这样的键可以通过在开头添加“search”来一致地映射到 JQuery id 选择器。 IE。 PersonFName => $("#searchPersonFName").
【解决方案2】:

通过ajax调用:

Javascript

 function makeTable(data) {
                var wrapColumn = function(value) {
                    return "<td>" + value + "</td>";
                };

                $("#table tbody").append("<tr><th>header1</th><th>header2</th><th>header3</th></tr>");

                for ( var i = 0; i < data.length; i += 1) {
                    $("#table tbody").append("<tr>" + wrapColumn(data[i].prop1)+ wrapColumn(data[i].prop2)+ wrapColumn(data[i].prop3)+ "</tr>")
                }
}

HTML

     <button type="button" class="btn btn-default" id="button"></button>
                    <div class="table-responsive">

                    <table id="table" class="table table-striped table-hover">

                        <tbody>

                        </tbody>

                    </table>

                </div>

点击按钮时:

        $("#button").click(function() {
                   var json = {};
        makeTable(json);
    })

javascript 函数将获取您的 JSON 对象并将每个属性逐行放入表中(首先填写标题)。当用户单击按钮并执行 makeTable 函数时,on 按钮单击将捕获。需要 html 才能在您的页面上实际拥有一个表格和按钮。在那里你需要一个 JSON 对象

【讨论】:

  • 嗨 JordanD,感谢您的回答,您能告诉我这到底是做什么的吗?我对这些东西很陌生。
  • 我想在夜间自动填充所有这些输入,没有用户坐在那里,我只想使用 Json 向它们传递一些随机变量。这更清楚吗?然后 javascript 自动按下该按钮以提交我使用 Json 提供的虚假数据
  • javascript 函数将获取您的 JSON 对象并将每个属性逐行放入表中(首先填写标题)。当用户单击按钮并执行 makeTable 函数时,on 按钮单击将捕获。需要 html 才能在您的页面上实际拥有一个表格和按钮。在那里你需要一个 JSON 对象
【解决方案3】:

我假设你想用来自有效 JSON 的值填充这个表,问题是你给我们提供了一个空的 JSON 对象,所以我不得不猜测和即兴发挥才能展示它是如何工作的。

您提供的代码中根本没有定义 searchPerson 函数,请允许我为您完成工作:P

function searchPerson() {
    jQuery('#searchPersonFName'   ).val(company1Filter.FName   );
    jQuery('#searchPersonLName'   ).val(company1Filter.LName   );
    jQuery('#searchPersonNumber'  ).val(company1Filter.Number  );
    jQuery('#searchPersonCompName').val(company1Filter.CompName);
    jQuery('#searchPersonFax'     ).val(company1Filter.Fax     );
    //ETC...
}

http://jsfiddle.net/2SMHz/5/ 应该提供一些关于如何执行此操作的见解。

【讨论】:

  • 这正是我正在寻找的,但我如何做到这一点,以便 javascript 每隔几秒选择一次提交按钮并在 24 小时内提交所有这些信息,同时我将监控服务器响应时间
  • 我将有 10 个不同的 company1Filter,其中必须输入不同的数据,所以我想我需要一个 for 循环
  • 我按小时收费 :D - 但您将创建您的提交函数,将其包装在 set_interval() ala stackoverflow.com/questions/3138756/… 中,并以您选择的语言进行服务器端处理。一些方便的参考资料包括tutorialspoint.com/javascriptlearn.jquery.comgoogle.com
  • ... 告诉我你想用这个小脚本解决什么问题?我看到您想要自动填充表格,并且我看到您想要自动提交表格,但我并不真正理解这解决的问题。如果我知道我可以提供更多/更好的建议。
  • 我非常想测试服务器对我每次搜索的响应时间(以毫秒为单位)。当数据很多时,也会响应时间变化。这样做我可以用样本数据运行 24 小时,看看这个搜索引擎有多轻巧。我正在 Apex 中使用 Salesforce
猜你喜欢
  • 2014-12-26
  • 1970-01-01
  • 2020-10-18
  • 2018-12-27
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多