0

我在数据库上有一个名为 CONTEST 的字段名,具有以下值:

50 - DE - HOUSE 5 -D
47 - SHERIFF - M

其中有几行。

fieldname 是一个文本字段。

我使用以下 JavaScript 尝试在表格上显示这些值:

//Create list of available contest to display.
function CreateResultSet(featureSet) {
    demVoteCount = 0;
    repVoteCount = 0;
    otherVoteCount = 0;
    RemoveChildren(dojo.byId("race"));
    resultsDataGroup = new Object();
    var controlIndex = 0;
    if (featureSet.length == 0) {
        return;
    }
    else {
        for (var i = 0; i < featureSet.length; i++) {
            if (!resultsDataGroup[featureSet[i].attributes.CONTEST]) {
                resultsDataGroup[featureSet[i].attributes.CONTEST] = new Array();
                var divRaceData = document.createElement("div");
                divRaceData.className = "divData";
                divRaceData.id = "divRaceName" + (controlIndex);
                divRaceData.innerHTML = featureSet[i].attributes.CONTEST;
                divRaceData.setAttribute("controlIndex", controlIndex);
                divRaceData.onclick = function () { DisplayChart(this); };
                dojo.byId("race").appendChild(divRaceData);
                controlIndex++;
            }

            if (featureSet[i].attributes.PARTY == "DEM") {
                demVoteCount += featureSet[i].attributes.VOTES;
            }
            else if (featureSet[i].attributes.PARTY == "REP") {
                repVoteCount += featureSet[i].attributes.VOTES;
            }
            else {
                otherVoteCount += featureSet[i].attributes.VOTES;
            }
            resultsDataGroup[featureSet[i].attributes.CONTEST].push({ ContestName: featureSet[i].attributes.CONTEST, CandidateName: featureSet[i].attributes.CANDIDATE, VoteTotal: featureSet[i].attributes.VOTES, Party: featureSet[i].attributes.PARTY });
        }
        dojo.byId("race").scrollTop = 0;
        currentRaceIndex = 0;
        DisplayChart(dojo.byId("race").childNodes[0]);
        dojo.byId('divSelectedGeometry').innerHTML = dojo.query(".divSelectedGeo", dojo.byId('geometry'))[0].innerHTML + " - ";
    }
}

当我运行代码时,找不到“CONTEST”。

但是,如果我删除破折号,结果会正确显示,但破折号需要在那里。

知道如何修改名为 CONTEST 的字段名来解释破折号吗?

如果措辞不当,请提前道歉。

非常感谢

4

1 回答 1

0

sql 使用破折号的方法只是将它放在您正在执行的括号之间,因此破折号不应该破坏您的 sql。

我唯一的解释是您的对象在来自服务器端时缺少一些值。

您能否更改发生错误的行以添加一些额外的检查,以便:

divRaceData.innerHTML = (featureSet[i] && featureSet[i].attributes && featureSet[i].attributes.CONTEST)?featureSet[i].attributes.CONTEST : "VALUE MISSING"; 

如果你得到“VALUE MISSING”,那么你的服务器端代码有问题,并且一个或多个对象没有你期望的层次结构。

就像 Beetroot 在评论中所说的那样,像这样注入 SQL 是一种非常糟糕的做法,所以即使你继承了应用程序,也值得改变它

于 2012-10-17T09:49:25.347 回答