我在这行代码中遇到意外的标识符错误: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
}
}
});
}
答案 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];
}