0

私はかなり前からWeb開発を行ってきましたが、JavaScriptでこの動作を見たことがありません。これは私が始めたコードです:

function processLogin() {
    if (loginReq.readyState == 4) {
        var data = eval('(' + loginReq.responseText + ')');
        data = data.userData;
        var focus = data.team.focus.coordinates;
        thisTeam = new Team(data.team.id, data.team.missionId, data.team.name, data.team.operatingArea.coordinates[0]);
        if (data.team.zoomLevel != '') {
            thisTeam.zoomLevel = data.team.zoomLevel;
        }
        if (focus.length > 0) {
            thisTeam.focusLat = focus[1];
            thisTeam.focusLon = focus[0];
        }
        for (var i = 0; i < data.teams.length; i++) {
            var temp_team = new Team(data.teams[i].id, data.teams[i].missionId, data.teams[i].name, []);
            teams.push(temp_team);
        }
        var teamDropDownText = [];
        for (var j = 0; j < teams.length; j++) {
            if (thisTeam.teamId == teams[j].teamId) {
                teamDropDownText.push('<option value="' + teams[j].teamId + '" selected="selected">' + teams[j].name + '</option>');
            } else {
                teamDropDownText.push('<option value="' + teams[j].teamId + '">' + teams[j].name + '</option>');
            }
        }
        $('#addIncidentTeam').html(teamDropDownText.join(''));
        $('#editIncidentTeam').html(teamDropDownText.join(''));
        // When all this has finished, make the
        //      rest of the calls to get the rest of the data
        startTimer();
        downloadDevices();
        initializeMap();
    }
}

私がそこに書いたことはそれほど重要ではないので、その理由を説明させてください。

後にセミコロンが1つ付いている行は、thisTeam.zoomLevel = data.team.zoomLevel;firebugで構文エラーが発生していました。コードを読んで再読み込みしましたが、何が間違っているのか理解できなかったので、セミコロンをと同じ行に配置するthisTeam.zoomLevel = data.team.zoomLevelと、空白行に構文エラーがあることがわかりました。

別のテストを行うために、この関数全体を独自のJavaScriptファイルに移動し、その行の後のすべてを1行に配置し、上記のコードの一部を凝縮しようとしたため、次のようになります。

function processLogin() {
if (loginReq.readyState == 4) {
    var data = eval('(' + loginReq.responseText + ')');
    data = data.userData;
    var focus = data.team.focus.coordinates;
    thisTeam = new Team(data.team.id, data.team.missionId, data.team.name, data.team.operatingArea.coordinates[0]); if (data.team.zoomLevel.length > 0) { thisTeam.zoomLevel = data.team.zoomLevel; } if (focus.length > 0) { thisTeam.focusLat = focus[1];thisTeam.focusLon = focus[0];} for (var i = 0; i < data.teams.length; i++) { var temp_team = new Team(data.teams[i].id, data.teams[i].missionId, data.teams[i].name, []); teams.push(temp_team); } var teamDropDownText = []; for (var j = 0; j < teams.length; j++) { if (thisTeam.teamId == teams[j].teamId) { teamDropDownText.push('<option value="' + teams[j].teamId + '" selected="selected">' + teams[j].name + '</option>'); } else { teamDropDownText.push('<option value="' + teams[j].teamId + '">' + teams[j].name + '</option>'); } } $('#addIncidentTeam').html(teamDropDownText.join('')); $('#editIncidentTeam').html(teamDropDownText.join('')); /* When all this has finished, make the rest of the calls to get the rest of the data */ startTimer(); downloadDevices(); initializeMap(); var kmlLink = document.getElementById('kmlLink'); var geoserverLink = document.getElementById('geoserverLink') if (user_role.substring(0, 1) == 'M') { kmlLink.href = "https://www.intelink.gov/giatstldni/hermes/webservice/kml/download/M&" + thisTeam.missionId + "&48"; kmlLink.innerHTML = "https://www.intelink.gov/giatstldni/hermes/webservice/kml/download/M&" + thisTeam.missionId + "&48"; geoserverLink.href = "https://www.intelink.gov/giatstldni/geoserver/wms/kml?layers=hermes_all&cql_filter=mission_id+=+" + thisTeam.missionId; geoserverLink.innerHTML = "https://www.intelink.gov/giatstldni/geoserver/wms/kml?layers=hermes_all&cql_filter=mission_id+=+" + thisTeam.missionId;} else { kmlLink.href = "https://www.intelink.gov/giatstldni/hermes/webservice/kml/download/T&" + thisTeam.id + "&48"; kmlLink.innerHTML = "https://www.intelink.gov/giatstldni/hermes/webservice/kml/download/T&" + thisTeam.id + "&48"; geoserverLink.href = "https://www.intelink.gov/giatstldni/geoserver/wms/kml?layers=hermes_all&cql_filter=team_id+=+" + thisTeam.id; geoserverLink.innerHTML = "https://www.intelink.gov/giatstldni/geoserver/wms/kml?layers=hermes_all&cql_filter=team_id+=+" + thisTeam.id; } } }

これは、どのようなエラーが発生するかを確認するためだけに行いました。正しく機能しないことはわかっていました。しかし、ファイルに存在しない行にエラーがあることがわかりました。私は得る:

構文エラー[このエラーを解除](範囲8から10)

私は行って、より多くのコードをコメントアウトしました、そしてそれはちょうどそれを範囲6から10にしました!理解できない!

4

1 に答える 1

0

犯人を見つけました。返されたJSONの値の1つが空でした(引用符などはありません)。あまり役に立たないエラーメッセージ。

于 2012-11-20T20:02:53.417 に答える