如何在对象初始化器中使用变量作为键
How to use a variable as a key inside object initialiser
在我正在工作的应用程序中,服务器页面习惯于接收输入的名称作为其值的键。是否可以使用 ajax 执行此操作?在此示例中,此名称被视为文本字符串。
$('table').each(function(){
$(this).delegate("input", "focusout", function(){
var thisValue = $(this).val();
var thisName = $(this).attr('name');
$.ajax({
timeout: 3000,
//cache: false,
data: {
p_session_id: $("[name='p_session_id']").val(),
p_username: $("[name='p_username']").val(),
thisName: thisValue
// ^^
},
success: function(data){
alert( data )
}
});
});
不幸的是,在对象初始化器中,:
左侧的部分不被视为变量,而是被视为字符串,因此the_key
被视为与"the_key"
相同。
这是我能想到的添加具有动态名称的属性的最直接的方法:
var fields = {
p_session_id: $("[name='p_session_id']").val(),
p_username: $("[name='p_username']").val()
}
fields[thisName] = thisValue;
然后在$.ajax
呼叫中使用fields
作为data: fields
也许没有那么优雅,但是:
function makeObj (a) {
if (!(a instanceof Array))
throw ('Attempt to build object from ' + (typeof a));
if (a.length % 2)
throw ('Attempt to build object from an array length ' + a.length);
for (var o = {}, i = a.length - 1; i > 0; i -= 2) {
console.log (a[i-1], a[i]);
o[a[i - 1]] = a[i];
}
return o;
}
var thisName = 'Hans PUFAL';
var thisValue = 'Paleoinformaticien';
var session_id = '123edrft456fg';
var o = makeObj (['p_session_id', session_id,
'p_username', 'HBP',
thisName, thisValue]);
可在此处使用 : http://jsfiddle.net/jstoolsmith/bZtpQ
相关文章:
- 替换另一个变量对象中的变量值
- 如何从表单变量对象中获取特定的from属性
- 变量/对象是否按值传递,为什么我不能在 javascript 中使用变量更改对象的属性
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- 如何将变量对象传递到多个javascript弹出窗体
- 如何将javascript变量/对象从一个页面传递到另一个页面
- 在具有递增的变量/对象中存储和控制传单 GeoJSON 图层
- 在回调中重用变量/对象
- 给一个有1个变量/对象的函数给定几个参数
- 使用单词'英语'因为变量/对象名称在javascript中不起作用
- 如何访问变量对象中的数据
- 使用onclick调用变量对象中的函数
- 使用Underscore JS部分和for循环的未定义变量对象
- 如何查看我的变量对象
- 变量对象属性名称作为javascript中的参数
- 从变量对象中移除DOM元素,以便将其发布到服务器
- 根据变量对象是否等于“true”输出内容
- 如何连接(变量+对象键名)以获得点表示法的对象值
- 为什么在ES5中将变量对象改为词法环境
- 动态引用变量(对象)