当我发送这样的数据时:
var deln = jQuery(this).val();
$.post("index.php", { del: "John", deln : "" });
它不起作用,但如果我手动输入deln var,如:
var deln = jQuery(this).val();
$.post("index.php", { del: "John", 8 : "" });
它确实有用......奇怪!!它唯一的数字,如果这有帮助....
答案 0 :(得分:4)
这就是对象文字在JavaScript中的工作方式,您不能使用变量作为密钥,至少不能使用该表示法。
您需要使用bracket notation构建对象以获得动态密钥,如下所示:
var obj = { del: "John" };
obj[$(this).val()] = "";
$.post("index.php", obj);
由于您传递的是一个空字符串,为什么不将其反转?使用已知密钥,如下所示:
$.post("index.php", { del: "John", id: $(this).val() });
答案 1 :(得分:0)
要动态设置对象属性,在使用对象表示法构造({}括号)时,不能将变量用作属性名称。
要动态执行此操作,您可以尝试以下操作:
var deln = jQuery(this).val();
var options = {}; // define object container
// now use object as an array
options["del"] = "John"; // this is same as: options.del = "John";
options[deln] = ""; // setting a property name by passing variable
// now simply pass in options object and thats it
$.post("index.php", options);
由于javascript中的对象和数组同样是handeled(两者都可以使用[]括号)