Вы создаете следующую структуру, используя метод push
:
[
{
"key":"first_name",
"value": "Bob"
}
]
Используя ваш код, все, что вам нужно сделать, это индексировать переменную postcmd
для объекта. У вас также были некоторые проблемы с индексированием вашего l oop. Переменная key
будет просто индексом 0
. Поэтому вам нужно установить его на postcmd[key]
, чтобы проверить ключ с именем "key"
.
function formsubmitplus(ele) {
postcmd.push({"key": ele.id, "value": ele.value});
for (key in postcmd) {
if (postcmd[key].hasOwnProperty("key")) {
console.log(postcmd[key].key)
}
}
request = $.ajax({
url: "/index.php",
type: "post",
data: postcmd[0]
});
}
Используя приведенный выше фрагмент, jQuery затем проанализирует данные в правильных парах значений ключа. Без указания индекса данные будут опубликованы как undefined=Bob
На стороне PHP вы сможете получить такие значения следующим образом:
<?php
echo $_POST['key'].PHP_EOL;
echo $_POST['value'];
?>
Альтернатива Метод - JSON Отправка
Вы можете сделать следующую модификацию, чтобы разместить данные как JSON:
function formsubmitplus(ele) {
for (key in postcmd) {
if (postcmd[key].hasOwnProperty("key")) {
console.log(postcmd[key].key)
}
}
request = $.ajax({
url: "/index.php",
type: "post",
contentType: 'application/json',
data: JSON.stringify(postcmd)
});
}
Затем на стороне PHP вы можете получить тело POST, используя следующее:
<?php
echo "<pre>";
$json_data = json_decode(file_get_contents('php://input'), true);
print_r($json_data);
?>
Если вы предпочитаете работать с PHP объектом против ассоциативного массива. Просто измените true
на false
.