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