Я пытаюсь представить html-форму со ссылкой (на месте кнопки формы), используя javascript. Вот мой код.
<?php
echo form_open('controller/method', 'id=formid', 'name=formname');
echo form_hidden('uniqval', 'somevalue'); //here some value is the actual string that
//needs to be passed to the controller function
?>
<a href="link/controller/method" onclick="handler();">Submit</a>
<?php echo form_close(); ?>
Javascript:
<script>
function handler(){
//document.formname.uniqval.value = 'somevalue'; //not sure if this is required
document.formname.submit();
}
</script>
Мой вопрос, как передать данные скрытой формы контроллеру в php codeigniter. Я пытаюсь прочитать его с помощью обычного почтового метода,
используя $this-> input-> post ('uniqval');
когда я указываю фактический URL-адрес для href, он вызывает функцию, но значение не передается.
Любые идеи или примеры будут оценены заранее, спасибо заранее.
Были некоторые проблемы с вашим кодом (в php, html и JS).
PHP:
вам необходимо закрыть форму form_close()
.
form_close()
принимает атрибуты как формат массива, поэтому имя формы отсутствовало, и javascript не смог найти форму для отправки.
<?php
echo form_open('controller/method', array('id'=>'formid', 'name'=>'formname'));
echo form_hidden('hidden', 'somevalue');
echo form_close();
?>
FYI: form_hidden()
не принимает атрибуты в параметрах. Это не имеет значения.
HTML:
Вы должны сделать <a>
unclickable.
<a href="javascript:void(0)" onclick="handler();">Submit</a>
Javascript:
Не нужно передавать скрытое значение через javascript. Итак, я удалил эту строку.
<script type="text/javascript">
function handler()
{
document.formname.submit();
}
</script>
Теперь форма submit будет работать, и вы можете использовать $this->input->post("somevalue")
чтобы зафиксировать значение.
Надеюсь это поможет :)
вы должны form_close() - это одно; затем измените "контроллер/метод" на фактическое имя контроллера и метода
поскольку ваш якорный тег не является якорем, href= "#"
echo form_open('controller/method', 'id=formid', 'name=formname');
, это не верно. Проверь мою линию. Это должно быть похоже наecho form_open('controller/method', array('id'=>'formid', 'name'=>'formname'));