如何将大量保存的数据加载到HTML页面?

时间:2013-03-15 23:13:12

标签: html

我有一张时间表,我的几位员工每天都会使用和填写。我想为他们添加功能以便能够点击“保存”,然后他们可以将他们保存的内容加载到时间表中。

我有保存部分正常工作。它只是将工作表中的数据保存到数据库中的某些表中。我遇到的真正问题是将这个加载回数据库的最佳方法是什么?我之前做过一些非常简单的保存/加载,但只有一个字段。我使用了像这样的ajax调用:

function grabTransportNum(strURL) {    
var req = getXMLHTTP();
if (req) {
  req.onreadystatechange = function() {
    if (req.readyState == 4) {
      // only if "OK"
      if (req.status == 200) {            
        document.getElementById('tandt1').innerHTML=req.responseText;           
      } else {
        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
      }
    }       
  }     
  req.open("POST", strURL, true);
  req.send(null);
}

}

所有这一切都是拉出一个数字并将'tandt1'的值设置为返回的任何数字。对每个字段执行此操作听起来很容易,但根据保存的数量,我可能需要将数据加载到100多个字段中。对于每一个字段都有这样的功能听起来非常糟糕,所以我认为必须有更好的方法来解决这个问题。我能得到一些建议吗?

2 个答案:

答案 0 :(得分:1)

您可以做的不是从服务器发送单个字段,而是发送包含多个字段的JSON,例如:

{
  "fields": [
    { "id": "tandt1", "value": "persisted value"},
    //in here you'd have the rest of the fields in the same format
  ]
}

然后将您的功能更改为更像这样的内容:

function reloadFields(strURL) {
    var req = getXMLHTTP();
    if (req) {
        req.onreadystatechange = function () {
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {
                    var data = JSON.parse(req.responseText);
                    if (data && data.fields && data.fields.length > 0) {
                      for (var field,i=0;i<data.fields.length;i++) {
                        field = data.fields;
                        document.getElementById(field.id).innerHTML = field.value;
                      }
                    }
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }
        }
        req.open("POST", strURL, true);
        req.send(null);
    }
}

答案 1 :(得分:0)

这样做的一个简洁方法是为页面上的javascript设置任何已更改字段的标志。然后,当员工提交数据时,实际发送的唯一数据就是所做的更改。因此,如果您使用的是ajax,我建议这样做:对于用户进行的每次编辑,将更改添加到您在用户点击提交时通过ajax发送的对象。