gpt4 book ai didi

javascript - 未捕获的类型错误 : Object has no method . .. Javascript

转载 作者:行者123 更新时间:2023-12-02 19:52:41 24 4
gpt4 key购买 nike

我遇到了一个问题,错误提示...

"Uncaught TypeError: Object f771b328ab06 has no method 'addLocation'"

我真的不确定是什么原因造成的。 'f771b328ab06' 是错误中的用户 ID。我可以添加新用户并防止用户重复,但是当我尝试将其位置添加到列表中时,出现此错误。

有人看出出了什么问题吗?该错误也发生在初始化函数的 else 语句中(如果用户 ID 存在,则仅附加位置,而不创建新用户)。我在代码中做了一些注释,我很确定这部分是由于我修改了其他用户提供的示例所致。

function User(id) {
this.id = id;

this.locations = [];

this.getId = function() {
return this.id;
};
this.addLocation = function(latitude, longitude) {
this.locations[this.locations.length] = new google.maps.LatLng(latitude, longitude);
alert("User ID:" );
};
this.lastLocation = function() {
return this.locations[this.locations.length - 1];
};
this.removeLastLocation = function() {
return this.locations.pop();
};
}

function Users() {
this.users = {};

//this.generateId = function() { //I have omitted this section since I send
//return Math.random(); //an ID from the Android app. This is part of
//}; //the problem.

this.createUser = function(id) {
this.users[id] = new User(id);
return this.users[id];
};
this.getUser = function(id) {
return this.users[id];
};
this.removeUser = function(id) {
var user = this.getUser(id);
delete this.users[id];

return user;
};
}

var users = new Users();

function initialize() {
alert("Start");
$.ajax({
url: 'api.php',
dataType: 'json',
success: function(data){
var user_id = data[0];
var latitude = data[1];
var longitude = data[2];

if (typeof users.users[user_id] === 'undefined') {
users.createUser(user_id);
users.users[user_id] = "1";
user_id.addLocation(latitude, longitude); // this is where the error occurs
}
else {
user_id.addLocation(latitude, longitude); //here too
alert(latitude);
}
}
})
}
setInterval(initialize, 1000);

由于我从手机获取ID并且不需要在这里生成它(仅接收它),所以我注释掉了创建随机ID的部分。为此,我必须向 Users() 中的 createUser 方法添加一个参数,以便可以将 ID 作为参数从 Initialize()< 传递。请参阅下面对 createUser 的更改:

之前,用生成的ID(生成数字的部分在上面带有注释的代码块中):

this.createUser = function() {
var id = this.generateId();
this.users[id] = new User(id);
return this.users[id];
};

之后,将 ID 作为参数传递:

this.createUser = function(id) { 
this.users[id] = new User(id);
return this.users[id];
};

如果有人有任何建议,我将非常感激。谢谢!

最佳答案

在这里您可以通过以下方式获取 user_id:

var user_id = data[0];

所以它是 json 答案的一部分:可能是字符串或另一个字典,这不能是用户对象。您应该尝试通过以下方式更新“if” block 内成功函数中的代码:

user = users.createUser(user_id);

//The following line is a non sense for me you put an int inside
//an internal structure of your class that should contain object
//users.users[user_id] = "1";

user.addLocation(latitude, longitude);

关于javascript - 未捕获的类型错误 : Object has no method . .. Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com