как передать данные формы в контроллер, когда для отправки формы используется document.formname.submit ()

0

Я пытаюсь представить 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, он вызывает функцию, но значение не передается.

Любые идеи или примеры будут оценены заранее, спасибо заранее.

Теги:
codeigniter

2 ответа

0

Были некоторые проблемы с вашим кодом (в 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") чтобы зафиксировать значение.

Надеюсь это поможет :)

  • 0
    Спасибо, IJas. Я пробовал это, но это не работает. Я думаю, что я близко, хотя. с href = "javascript: void (0)", он просто идет на пустую страницу, не вызывая правильный метод, если я не дам полный URL для href. Я обновил свой код в посте. Можете ли вы еще раз взглянуть.
  • 0
    Проверьте эту строку echo form_open('controller/method', 'id=formid', 'name=formname'); , это не верно. Проверь мою линию. Это должно быть похоже на echo form_open('controller/method', array('id'=>'formid', 'name'=>'formname'));
Показать ещё 6 комментариев
0

вы должны form_close() - это одно; затем измените "контроллер/метод" на фактическое имя контроллера и метода

поскольку ваш якорный тег не является якорем, href= "#"

  • 0
    Спасибо. У меня есть form_close () в моем коде. и что касается контроллера / метода, у меня есть фактическая функция контроллера в form_open (), а для href я дал полную ссылку, например, href = "www.example.com/controller/function", она не работает с href = "#". Во всяком случае, это вызывает правильную функцию. но единственная проблема заключается в том, что данные скрытой формы не передаются в метод контроллера.
  • 0
    тогда вам следует обновить этот вопрос с помощью действующего кода, который вы используете; отладить версию псевдо-кода очень сложно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню