グローバル/ローカル変数の周りにたくさんの投稿を見ましたが、何か不足していると思います。forループ内でJavascript変数を設定する
var commandList = {
'command_a': function() {
socket.emit({action: 'a'});
},
'command_b': function() {
socket.emit({action: 'b'});
}
};
代わりのコマンドの私のリストを定義し、私はAJAX呼び出しから動的にそれらを定義したいと思います: これは私が取得しようとしているものです。 これが私の最高の試みです:
function getCommands() {
$.ajax({
type:'get',
url: '/getCommands',
data: data,
success: function(data) {
JSONdata = $.parseJSON(data);
// [{"action": "b", "command": "command_b"},{"action": "a", "command": "command_a"}]
var commandList = [];
jQuery.each(JSONdata, function(i, val) {
command = val['command'];
action = val['action'];
service = {
[command]: function() {
socket.emit({action: [action]});
}
console.log(service[Object.keys(service)[0]]);
}
commandList.push(service);
});
}
});
}
主な問題は、私のループでは、私のaction
変数は、私はaction
のみ定義されますので、あると仮定しa
またはb
service
で、置き換えられませんということであるときに、関数が呼び出されます。 console.log
リターン:
function() {
socket.emit({action: [action]});
}
の代わりに:
function() {
socket.emit({action: 'a'});
}
を私はuが 'channel'が定義されている – Fantasim
JSONdata = $ .parseJSON(データ)の前に "VAR" を追加する必要があると思いますか? – guest271314
@ guest271314申し訳ありませんがタイプミスで修正しました。 – Bnjii