0

そこで、最近、Javascriptで制御されるHTML5 Indexeddb機能と、これをSQL Serverデータベースに組み込んで、データベースのバージョンをオフラインで利用できるように情報を共有およびコピーする方法を検討しました。

私が抱えている難問は、C#を使用してデータベースから値を取得し、SQLServerデータベースからブラウザーのJavaScriptにオブジェクトのセットを渡すための最良の方法を見つけることです。

実行できる小さな「ハック」はたくさんありますが(たとえば、データをラベルに入れてから、Javascriptでそれを取得するだけですdocument.getElementById( "DataHere")。value;)より効率的な受け渡し方法があるかどうか疑問に思いました全体のデータベースの内容?

現在、データベースから返されるものの例として、文字列の配列(JSON.Netパッケージを使用してすべてJSON形式)を生成するメソッドがあります。

    public string[] GenerateEmployeeSample() {
    List<Employee> listEmps = new List<Employee>();
    string[] listJSON = new string[64];
    string[] FirstNames = {"Alonso", "Alfred", "Angus", "Alfresco" };
    string[] LastNames = {"Johnson","Williams", "Zelwegger", "Jones" };
    string[] Departments = {"Finance", "Cleaning", "Pusher", "Stairs" };
    string emailEnd = "@email.com";

    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            for (int k = 0; k < 4; k++) {
                Employee tempEmp = new Employee();
                tempEmp.FirstName = FirstNames[i];
                tempEmp.LastName = LastNames[j];
                tempEmp.Department = Departments[k];
                tempEmp.Email = FirstNames[i] + "." + LastNames[j] + emailEnd;
                listEmps.Add(tempEmp);
            }
        }
    }
    int count = 0;
    foreach(Employee emp in listEmps){
        string tempString = JsonConvert.SerializeObject(emp);
        listJSON[count] = tempString;
        count++;
    }

    return listJSON;
}

これでデータセットができましたが、この配列をJavascriptに渡すにはどうすればよいですか?これが些細な質問である場合はお詫びしますが、Javascriptはまだ私にはかなり新しいものであり、私が望んでいたことを実行しなかったか、まったく機能しなかったかなりの数の例を読んだ後、私は少し途方に暮れています。

読んでくれてありがとう!

4

1 に答える 1

0

具体的には、要求されたときにJSON文字列を返すリソース(aspxページやjsonファイルなど)を作成します。オブジェクトをJSONとしてシリアル化するためのコードがすでにあるため、このステップはすでに途中まで進んでいます。これを行う簡単な方法は、を使用してこの関数の戻り値を出力するページを作成することです。Response.Write(GenerateEmployeeSample());

次に、XMLHttpRequestオブジェクトを使用してこのリソースを要求しJSON.parse、ネイティブのjavascriptオブジェクトを返すjavascriptのを使用して返されたJSONを解析します。その後、このオブジェクトを自由に使用できます。

于 2012-10-30T17:05:00.453 に答える