Javascript意外标识符错误

时间:2013-01-30 20:14:14

标签: javascript jquery ajax

我在这行代码中遇到意外的标识符错误:var player[data[x].split("|",1)] = data[x].split("|")[1];

响应数据采用以下格式:

Mike Trout|0\nRyan Braun|0\n...

这是完整的JS函数:

function updateChance(round, pickNumber)
{
    $.ajax({
            type: "GET",
            data: {round: round, pickNumber: pickNumber},
            url: "./lib/updatechance.php",
            dataType: "html",
            async: false,
            success: function(response) 
            {
                var data = response.split("\n");
                for (var x=0; data.length; x++)
                {
                    var player[data[x].split("|",1)] = data[x].split("|")[1];
                }

                for (var r = 1; r < $('#battersTable').rows.length; r++){
                    //do something with player

                }
            }
    });
}

4 个答案:

答案 0 :(得分:2)

看看你在这里做了什么

.split("|",1)  //wrong

.split("|")[1]  //right

另一个问题,你有var括号表示法,不会发生。

var player[data[x].split("|",1)]  <-- var, should not be there

并且for循环缺少一个检查,因此它将运行无限。

for (var x=0; data.length; x++)  <-- data.length what?

你为什么要分裂两次?两次努力,做一次

for (var x=0; x<data.length; x++) {
    var info = data[x].split("|");
    player[info[0]] = info[1];
}

如果未全局定义player,则需要在循环之前定义它。

答案 1 :(得分:1)

您无法在声明变量的同一语句中访问对象索引器。 split函数也只接受一个参数并返回一个可索引的数组。所以这个:

for (var x=0; data.length; x++) {
   var player[data[x].split("|",1)] = data[x].split("|")[1];
}

应该是:

var player = {};
for (var x=0; x < data.length; x++) {
   var value = data[x].split("|")[1];
   player[value] = value;
}

还将拆分操作的结果存储在中间变量中,并修复了导致循环最终崩溃的循环语法问题,语法错误不会阻止代码运行。

总而言之,由于您遇到了很多语法问题,我建议您通过jshint这样的linter来运行代码。它会为您提供有关问题的详细错误报告。

答案 2 :(得分:1)

var player[data[x].split("|",1)] = data[x].split("|")[1];

关键字var没有意义。你只需要声明一个局部变量,这里的内容只是一个赋值。

还有其他问题(请参阅其他答案和评论),但这实际上是borwser报告的语法错误。

答案 3 :(得分:1)

我猜你想要这样做:

     var player = {};
     for (var x=0; data.length; x++) {
        var flds = data[x].split("|");
        player[flds[0]] = flds[1];
     }