У меня есть объект JSON, который динамически создается на основе взаимодействия с пользователем, динамический ключ будет меняться каждый раз
пример JSON
{
"normalkey": "John Smith",
"dynamickey ": "testing"
}
есть ли способ назначить имя динамического ключа, не зная, например, имя ключа.
$.ajax({
type: "POST",
url: ROOT+"controlpanel/menuBuilder",
data: "clicked="+menu,
dataType:"json",
success: function(data)
{
$('#foo').html(data.normalKey);
$('#bar').html(data.dynamicKey);
}
Поскольку это объект javascript, вы можете использовать метод jQuery $.each()
для получения имен ключей:
success: function(data)
{
$.each(data, function(key, item){
console.log(key); // this gets you the key names
});
}
Согласно вашему комментарию
как бы присвоить ключ 2 переменной без использования ее имени?
var o = {
"normalkey": "John Smith",
"dynamickey ": "testing"
};
var a = []; // declare an empty array.
$.each(o, function(key, item){
a.push(key); // push the keys in it.
});
var dynkey = a.pop(); // .pop() gets you the dynamickey here as
// this is the last item in the array.
console.log(dynkey); // this logs = dynamickey
Метод pop удаляет последний элемент из массива и возвращает это значение вызывающему.
Итак, с вашим последним комментарием:
success: function(data)
{
var a = [];
$.each(data, function(key, item){
a.push(key); // this gets you the key names
});
var dynkey = a.pop();
$('#container').html(data[dynkey]); // <----here you have to do this.
}
когда пространство пришел во имя затем использовать []
Скоба обозначения шаблона
success: function(data)
{
$('#foo').html(data["normal key"]);
$('#bar').html(data["dynamic key"]);
}
обновлено, чтобы использовать ключевые слова jQuery.each
$.each(data, function(key, item){
console.log(key); // here you get the key names
});
[]
называется скобка