0

何人かの従業員が毎日使用して記入するタイムシートがあります。「保存」をクリックして、後で保存したものをタイムシートにロードできるようにする機能を追加したいと思います。

保存部分は問題なく機能しています。シート内のデータをデータベース内のいくつかのテーブルに保存するだけです。私が持っている本当の問題/質問は、これをデータベースにロードし直すための最良の方法は何ですか?私は以前にいくつかの非常に単純な保存/読み込みを行いましたが、フィールドは1つだけです。私は次のような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以上のフィールドにデータをロードする必要がある場合があります。すべてのフィールドにこのような機能を持たせることは絶対にひどいことのように聞こえるので、これを実行するためのより良い方法があるに違いないと思います。いくつかの提案をいただけますか?

4

2 に答える 2

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);
    }
}
于 2013-03-16T00:04:32.610 に答える
0

それを行うためのきちんとした方法は、ページ上のjavascriptが、変更されたフィールドにフラグを設定することです。次に、従業員がデータを送信すると、実際に送信されるデータは変更が加えられたものだけです。したがって、ajaxを使用している場合は、次のことをお勧めします。ユーザーが編集するたびに、ユーザーが送信を押したときにajaxを介して送信するオブジェクトに変更を追加します。

于 2013-03-15T23:53:51.253 に答える