2012-10-16 59 views
0

我有一個名爲CONTEST使用下面的值在數據庫上字段名:JS不允許破折號( - );有任何想法嗎?

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來解決破折號?

對不起,如果這是措辭不佳。

非常感謝

+0

你可以運行螢火蟲或Chrome開發人員工具,並在告訴我們哪條線發生錯誤。這可以幫助你找到問題的原因 – kabaros

+0

@kabaros,它在這一行: divRaceData.innerHTML = featureSet [i] .attributes.CONTEST; –

+2

提供屬性'.CONTEST'存在並且是一個合法的JavaScript標識符,代碼不應該失敗。錯誤消息表明'.CONTEST'不存在,所以我只能假設問題出在代碼之外的某處;即構成'featureSet'的任何地方。 –

回答

0

的SQL有破折號的辦法就是把它放在你正在做的括號,破折號所以不應該破壞你的SQL。

我唯一的解釋是,你的對象從服務器端來的時候缺少一些值。

你可以改變線在發生錯誤時添加一些額外的檢查,以便:

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

如果你得到「VALUE失蹤」那麼有什麼錯在你的服務器端代碼和一個或多個對象沒有你期望的層次結構。

而像甜菜根在評論中說,這是一個非常不好的做法,注入SQL這樣的,所以即使你繼承了應用程序了,這是值得改變這種

+0

謝謝@卡巴羅斯。我按照你的建議做了,但我沒有收到VALUE MISSING消息。我確實有「無法找到競賽」之類的東西,我知道這存在。 –

+0

嘗試更改爲featureSet [i] .attributes [CONTEST] ..並且還打開了firebug或控制檯,並添加一行:console.log(featureSet [i] .attributes.CONTEST);在你的代碼之前這個調用,看看你得到的對象,如果它形成了你期望的方式 – kabaros

+0

我使用了螢火蟲。在你做出最新的改變後,它仍然顯示相同的錯誤 –