Использование объекта в параметре jQuery post - PullRequest
2 голосов
/ 18 января 2010

Я думаю, что это невозможно, но мне хотелось бы понять, почему.Я хочу сделать что-то вроде этого:

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 ]

1 голос
/ 18 января 2010

Я не обязательно знаю, как сделать это именно так, как вы этого хотите.Однако вы можете отправить объект и json_decode() на стороне php.

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];
}

Должен иметь тот же эффектВы ищете.

1 голос
/ 18 января 2010

Вы можете получить тот же конечный результат, вы просто не можете сделать это в одном выражении:

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 для вычисления «ключа».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...