Рейтинг:
2
Kornfeld Eliyahu Peter
HTTP-GET не отправляет скрытые поля на сервер автоматически, поэтому у вас есть два варианта...
1. добавить его в параметр запроса
2. Используйте сообщение
Ваша вторая проблема здесь:
<div id="result"></div>
<form method = "POST" action = "" name="cust_form">
<p>Type anything in the box</p>
<input type="text" name="customer" size="10" value="<?php print $customer;?>">
<p><input type="submit" value="Continue"></p>
</form>
"Результат" вы используете не скрытое поле (означает ввод с типом hidden), а div, и он также находится вне формы...
Вы должны использовать разметку для этого:
<div id="result"></div>
<form method = "POST" action = "" name="cust_form">
<p>Type anything in the box</p>
<input type="text" name="customer" size="10" value="<?php print $customer;?>">
<p><input type="submit" value="Continue"></p>
<input type="hidden" id="result">
</form>
-- РЕДАКТИРОВАТЬ --
Предлагаемое решение:
sample.php<?php
$php_result = $_POST['result'] ? $_POST['result'] : 'server';
$customer = $_POST['customer'];
echo "From server =" . $php_result;
echo "From client = " . $customer;
?>
<!DOCTYPE html>
<html>
<body onload="initStorage()">
<form method="POST" action="sample.php" onsubmit="saveStorage()">
<p>Type anything in the box</p>
<input type="text" name="customer" size="10" value="<?php echo $customer;?>">
<input type="hidden" name="result" value="<?php echo $php_result;?>">
<input type="submit" value="Continue">
</form>
</body>
<javascript>
function initStorage()
{
// store 'result' on local storage
}
function saveStorage()
{
// save local storage to 'result'
return(true); // to continue...
}
</javascript>
</html>
Member 13802778
Спасибо за ваш ответ. Теперь я изменил GET to POST и попробовал его, но по-прежнему никакого выхода. URL-адрес, где я тестирую скрипт, таков: http://www.jhw1.com/local_store.php
Kornfeld Eliyahu Peter
Вопрос в следующем: Вы тоже изменили PHP?
Member 13802778
Извините, я новичок на этом сайте. Я ответил не в том месте. Пожалуйста, ознакомьтесь с пересмотренным кодексом выше.
Kornfeld Eliyahu Peter
В стандартном HTTP POST скрытое поле должно находиться внутри формы, которая будет отправлена на сервер...
Member 13802778
Я понимаю это, но я безнадежен с javascript, поэтому я не знаю, как это сделать. Я просто попытался переместить тег end form после тега end scrpt, но это не имеет никакого значения.
Kornfeld Eliyahu Peter
Только не сценарий! Скрытые поля!!!
Member 13802778
Но в форме нет скрытых полей.
Member 13802778
Я действительно ценю помощь, которую вы мне оказываете. Не могли бы вы привести пример кода, который я должен использовать?
Kornfeld Eliyahu Peter
См. раздел обновленное решение...
Member 13802778
Это имеет смысл, но я изменил разметку, и я все еще не получаю никакого результата. Должен ли я иметь отдельную кнопку, так как кнопка Продолжить была там, чтобы добавить данные в локальное хранилище? Должна ли она быть отдельной формой?
Kornfeld Eliyahu Peter
На мой 12-й взгляд на ваш код я действительно понял, что я не вижу, где вы вызываете свой код...
Это не функция, поэтому она будет выполнена только один раз, когда страница загружена... и, вероятно, ничего не делает тогда...
Member 13802778
Он, безусловно, отправляет данные, введенные в текстовое поле, в локальное хранилище браузера. Используя Firefox local storage inspector, он показан там. Данные тоже возвращаются, как видно после строки "это вывод javascript из хранилища...". я предположил, что результат также будет отправлен на сервер. После ваших исправлений я не могу придумать другого способа сделать это.
Member 13802778
Еще раз спасибо за ваши усилия. Я думаю, что в конце концов найдется ответ на этот вопрос. Мне лучше начать с нуля и изучить javascript. Не то, чтобы у меня было какое-то желание, но мне нужно решить эту проблему рано или поздно.
Kornfeld Eliyahu Peter
Мне не совсем понятно, чего вы добиваетесь, но добавлено предложение, которое показывает, как сохранить боковую ценность серверов во время post-back...
Member 13802778
Нет, к сожалению, не ответ. Я должен был объяснить, что вся идея сохранения в локальном хранилище заключается в том, что браузер можно отключить, а данные можно получить впоследствии, когда он снова будет включен. Он сохраняет его на неопределенный срок без использования сервера. Это бесполезно, если только данные не могут быть использованы после извлечения и повторной заполнения формы для сохранения в базе данных SQL.
Kornfeld Eliyahu Peter
ОК... Смотрите обновленное решение...
Member 13802778
Нет, это не сработало.