在我正在使用的应用程序中,服务器页面用于接收输入的名称作为其值的关键。有可能用ajax做到这一点吗? 在此示例中,thisName被视为文字字符串。
$('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 )
}
});
});
答案 0 :(得分:1)
不幸的是,在对象初始化器中,:
左侧的部分不会被视为变量而是字符串,因此the_key
被视为与"the_key"
相同。
这是我可以想到的添加动态名称属性的最直接方式:
var fields = {
p_session_id: $("[name='p_session_id']").val(),
p_username: $("[name='p_username']").val()
}
fields[thisName] = thisValue;
然后在fields
来电中使用$.ajax
作为data: fields
答案 1 :(得分:0)
也许不那么优雅但是:
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]);