怪异的ajax jquery问题

时间:2010-12-27 15:40:07

标签: jquery ajax

当我发送这样的数据时:

    var deln =  jQuery(this).val();
$.post("index.php", { del: "John", deln : "" });

它不起作用,但如果我手动输入deln var,如:

var deln =  jQuery(this).val();
$.post("index.php", { del: "John", 8 : "" });

它确实有用......奇怪!!它唯一的数字,如果这有帮助....

2 个答案:

答案 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(两者都可以使用[]括号)