jQuery .post с массивом динамических переменных

Я только что попробовал и более или менее разочаровался в отправке массива в функцию 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 ответа

Сейчас похоже, что вы передаете функцию в качестве параметра запроса. Я просто вытащил этот код и сначала собрал вашу карту, а затем передал ее функции 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");
}

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

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

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

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

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

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

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

Другие вопросы по тегам