問題似乎是調用函數vote_ipcheck()
和vote_cookie_check()
都拋出錯誤Uncaught TypeError: undefined is not a function
。如果我把函數的內容放在$.getJSON call
內,那麼這不是問題,但是調用該函數會引發該錯誤。在異步函數中調用函數javascript(流星)undefined
如果有人有一個想法,爲什麼這樣的事情發生,這將是偉大的。
if (ip_check) {
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
console.log(data.host);
var vote_ipcheck = vote_ipcheck(data.host);
var vote_cookie_check = vote_cookie_check();
if (vote_ipcheck && vote_cookie_check) {
Router.go('pollyResults', {_id: id});
} else if (vote_ipcheck == false && vote_cookie_check == false) {
update_poll();
}
});
}
function vote_cookie_check() {
// Handling the cookie business
console.log(ReactiveCookie.list());
if (ReactiveCookie.get('voted')) {
var object_voted = JSON.parse(ReactiveCookie.get('voted'));
if (id in object_voted) {
if (object_voted[id] == true) {
return true;
}
} else {
object_voted[id] = true;
ReactiveCookie.set('voted', JSON.stringify(object_voted), {days: 365});
return false;
}
} else {
var object_voted = {};
object_voted[id] = true;
ReactiveCookie.set('voted', JSON.stringify(object_voted), {days: 365});
return false;
}
}
function vote_ipcheck(ip) {
ip_voted = ip_array.indexOf(ip);
if (ip_voted > -1) {
return true;
}
else {
Polls.update({_id: id}, {$push : {already_voted : ip}});
return false;
}
}
您可以嘗試通過提供回調來編寫它們,並查看它們是否可以正常工作。 –