0

次のことを行う最善の方法はどのようになるのでしょうか。

|を使用して ajax 経由でデータベース データを返しています。データ間の区切りとして。

success: function (data, responseText, textStatus) {
    var dataBack = data.split("|");

    $('#name').html(dataBack[0]);
    $('#company').html(dataBack[1]);
    $('#address').html(dataBack[2]);
    $('#phone').html(dataBack[3]);
    $('#email').html(dataBack[4]);
    $('#city').html(dataBack[5]);
    $('#state').html(dataBack[6]);
    $('#zip').html(dataBack[7]);
    $('#accNum').html(dataBack[8]);

    howManyCases = dataBack[9];
    var htmlCode = '';
    var caseStats = '';
    var myDate = new Date(dataBack[10]);                
    var month = new Array();

    month[0]="01";month[1]="02";month[2]="03";month[3]="04";month[4]="05";month[5]="06";
    month[6]="07";month[7]="08";month[8]="09";month[9]="10";month[10]="11";month[11]="12";

    var theFinalDate = myDate.getFullYear() + '-' + month[myDate.getMonth()] + '-' + myDate.getDate();

    if (dataBack[14] == 0) {
        caseStats = 'PENDING';
    } else {
        caseStats = 'ACCEPTED';
    }

    htmlCode = '<td width="124" style="padding-top: 8px; padding-left: 10px;" id="caseDate">' + theFinalDate + '</td>' + 
                '<td width="160" style="padding-top: 8px;" id="caseNum">' + dataBack[11] + '</td>' + 
                '<td width="172" style="padding-top: 8px;" id="caseLab">' + dataBack[12] + '</td>' + 
                '<td width="87" style="padding-top: 8px; color: #d8a401;" id="caseStatus">' + caseStats + '</td>' + 
                '<td width="59" style="padding-top: 8px;" id="caseQue">' + dataBack[13] + '</td>';

    $('#cases').html(htmlCode);

dataBack[9]は、返されるレコードの数 (0-4) を格納します「制限 5」

dataBack[10]-[14]は、テーブルの各行に必要なものを入力するために必要なデータです。

同様に、複数のレコードが返された場合、その番号はdataBack[15]-[19]などに続きます。

では、ある種のループでこれを行うには何が最善でしょうか?

4

1 に答える 1

0

これはいくつかの可能性の例です。ループを使用してコードをより再利用可能にします。もちろん、表示されたデータを混合しているように見えるため、例から正確に推測できないため、これらのアイデアを実際に必要なものに成形する必要があります。 .

CSS

.caseDate {
    width: 124px;
    padding-top: 8px;
    padding-left: 10px;
}
.caseNum {
    width: 160px;
    padding-top: 8px;
}
.caseLab {
    width: 172px;
    padding-top: 8px;
}
.caseStatus {
    width: 87px;
    padding-top: 8px;
    color: #d8a401;
}
.caseQue {
    width: 59px;
    padding-top: 8px;
}

JavaScript

var howManyCases,
    table = document.createElement("table"),
    tbody = document.createElement("tbody"),
    data = "John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0|John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0|John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0|John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0|John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0|John Smith|Some Company|The Street|000 - 000 000|john@some.company|Lost|Sunny|123-456|0123456789|3|" + Date.now() + "|1001010010|LAB1234|Que1234|0",
    month = [],
    i;

for (i = 1; i < 13; i += 1) {
    if (i < 10) {
        month.push("0" + i);
    } else {
        month.push(i.toString());
    }
}

tbody.id = "cases";
table.appendChild(tbody);
document.body.appendChild(table);

function success(data) {
    var dataBack = data.split("|"),
        length = dataBack.length,
        fields = ['name', 'company', 'address', 'phone', 'email', 'city', 'state', 'zip', 'accNum'],
        caseStats = '',
        classes,
        myDate,
        theFinalDate,
        i,
        tr,
        tempTd,
        records = [];

    for (i = 0; i < length; i += 15) {
        records.push(dataBack.slice(0, 15));
    }

    records.forEach(function (record, recordNum) {
        fields.forEach(function (field, index) {
            var newDiv = document.createElement("div");

            newDiv.id = field + recordNum;
            newDiv.textContent = record[index];
            document.body.appendChild(newDiv);
        });

        howManyCases = parseInt(record[9], 10);
        myDate = new Date(parseInt(record[10], 10));
        theFinalDate = myDate.getFullYear() + '-' + month[myDate.getMonth()] + '-' + myDate.getDate();

        if (parseInt(record[14], 10) === 0) {
            caseStats = 'PENDING';
        } else {
            caseStats = 'ACCEPTED';
        }

        classes = {
            "caseDate": theFinalDate,
            "caseNum": record[11],
            "caseLab": record[12],
            "caseStatus": caseStats,
            "caseQue": record[13]
        };

        tr = document.createElement("tr");
        Object.keys(classes).forEach(function (className) {
            tempTd = document.createElement("td");
            tempTd.className = className;
            tempTd.textContent = classes[className];
            tr.appendChild(tempTd);
        });

        tbody.appendChild(tr);
    });
}

success(data);

jsfiddleについて

于 2013-04-26T21:17:27.903 に答える