在jQuery post参数中使用object

时间:2010-01-18 20:17:49

标签: jquery ajax post object parameters

我认为这是不可能的,但我想了解原因。 我想做这样的事情:

var pVals = {
    ob1: "postvar1",
    ob2: "postvar2",
    ob3: "postvar2"
};

$.post("php/dosomething.php",{pVals.ob1:"object 1", pVals.ob2:"object 2", pVals.ob3:"object 3"});

我得到了一个错误:

  

缺少:属性ID

之后

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你可以得到相同的最终结果,你不能在一个陈述中做到:

var pVals = {
    ob1: "postvar1",
    ob2: "postvar2",
    ob3: "postvar2"
};

var obj = {};
obj[pVals.ob1] = "object 1";
obj[pVals.ob2] = "object 2";
obj[pVals.ob3] = "object 3";
$.post("php/dosomething.php", obj);

这是因为匿名散列样式构造函数中的“键”仅被视为文字,它们本身不能是表达式。但是当您使用类似数组的引用时,您可以使用任何有效的JavaScript表达式来计算“密钥”。

答案 1 :(得分:1)

我不一定知道如何按照你想要的方式去做。但是你可以在php端发送对象和json_decode()

JS:

$.post("php/dosomething.php",{pNames:pNames, pValues:pVals});

PHP:

$p_names = json_decode($_POST['pNames']);
$p_vals = json_decode($_POST['pValues']);

for($i=0;$i<count($p_names);$i++){
   $$p_names[$i] = $p_vals[$i];
}

应该具有您正在寻找的相同效果。