Пользователи моего сайта, в идеале, будут отправлять несколько сотен сообщений на сервер БД в течение примерно часа (в основном это онлайн-эксперимент). Эксперимент реализован в js, поэтому я пытаюсь использовать объект XMLHttpRequest для публикации данных, которые собирает сценарий.
В чем я не уверен, так это в том, как использовать параметр POST. Я хочу установить около 8 различных пар ключ / значение для переменной $ _POST, чтобы она была доступна странице .php для обработки перед отправкой на сервер БД. Меня не интересует получение какой-либо информации с самого сервера, только ее отправка (вот почему, и я не уверен, что это правильный подход, я устанавливаю условное состояние readyState в '1' / open).
Вот скрипт, с которым я сейчас работаю:
function postData(dataList) {
var xmlhttp = new XMLHttpRequest();
var processingUrl = "process_exercise_data.php";
var POSTBody = "";
POSTBody+="block_type="+encodeURIComponent(dataList[0]);
POSTBody+="&block_number="+encodeURIComponent(dataList[1]);
POSTBody+="&trial_type="+encodeURIComponent(dataList[2]);
POSTBody+="&trial_number="+encodeURIComponent(dataList[3]);
POSTBody+="&input_value="+encodeURIComponent(dataList[4]);
POSTBody+="&output_value="+encodeURIComponent(dataList[5]);
POSTBody+="&prediction_value="+encodeURIComponent(dataList[6]);
POSTBody+="&error="+encodeURIComponent(dataList[7]);
xmlhttp.open("POST",processingUrl,true);
if (xmlhttp.readyState==4) {
xmlhttp.send(POSTBody);
}
}
Основная цель - отправить пары ключ / значение на страницу .php, используя POST, оставаясь на текущей странице (простой запрос AJAX, если я не ошибаюсь). Любые комментарии или предложения очень ценятся!
Помните, все, что я пытаюсь сделать, - это заставить пользователя, когда он / она действует определенным образом при определенном условии (вне области действия этой функции), вызывать эту функцию и ЗАПИСАТЬ эти данные в сервер. Текст ответа сервера не требуется.
EDIT:
Теперь мой вопрос таков: смогу ли я по-прежнему обращаться к массиву $ _POST на странице обработки php? Вот пример:
$block_type = $_POST['block.type'];