jQuery .post с массивом динамических переменных - PullRequest
1 голос
/ 01 июля 2010

Я только что попробовал и более или менее разочаровался в отправке массива в функцию jQuery post, которая затем выдается в виде переменных POST.

Я читал много подобных вопросов наздесь, но никто, кажется, не совсем понял.

Я перепробовал все, что мог, закрывает, было следующее

function sendValue(requestArray, requestAction){
$.post("requests.php", { request: requestAction, 'requestArray[]': function () { $.each(requestArray, function(key, value) { return key: value; }); } }, function(data){    $('#display').html(data.returnFromValue);

 }, "json");
}

неправильное дерево, лай?С тех пор я заставил это работать, сериализовав то, что было requestArray и передав PHP в parse_str, но любое руководство может помочь получить это так, как я хотел.

Ответы [ 2 ]

1 голос
/ 01 июля 2010

Сейчас похоже, что вы передаете функцию в качестве параметра запроса.Я бы просто вытащил этот код и сначала собрал вашу карту, а затем передал ее функции post.

function sendValue(requestArray, requestAction){
   var requestParameters = {};
   requestParameters["request"] = requestAction;
   $.each(requestArray, function(key, value) {
      requestParameters[key] = value;
   });
   $.post("requests.php", requestParameters, function(data){ $('#display').html(data.returnFromValue); }, "json");
}

Если вы действительно хотите, чтобы они оставались на карте, а не выровняли их, возможно, попробуйте что-нибудькак это.Я не уверен, что PHP справится с этим автоматически, но вы можете написать код PHP для самостоятельной сборки карты.

function sendValue(requestArray, requestAction){
   var requestParameters = {};
   requestParameters["request"] = requestAction;
   $.each(requestArray, function(key, value) {
      requestParameters["requestArray[" + key + "]"] = value;
   });
   $.post("requests.php", requestParameters, function(data){ $('#display').html(data.returnFromValue); }, "json");
}
0 голосов
/ 01 июля 2010

Насколько я знаю, если вы добавите квадратные скобки для ввода формы, PHP будет ожидать, что этот ключ будет содержать плоский подмассив, поэтому:

<input name="foo[]" value="blahblah"/>
<input name="foo[]" value="blahblah"/>

даст массив как:

array("foo" => array("blahblah", "blahblah"));

Я не думаю, что в вашем requestArray[] может быть множество пар ключ / значение, например то, что вы пытаетесь сделать, например, чтобы получить на сервере что-то вроде:

array("foo" => array("bar" => "baz, "hehe" => "hahah"))

поэтому я думаю, что ваш подход, который включает в себя сериализацию подмассива на клиенте и его синтаксический анализ на сервере, в данном случае кажется правильным.

...