当'document.formname.submit()'用于提交表单时,如何将表单数据传递给控制器

时间:2014-03-04 23:34:58

标签: javascript php jquery html codeigniter

我正在尝试使用javascript提交带有链接(代替表单按钮)的html表单。 这是我的代码。

<?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's 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-&gt; input-&gt; post('uniqval');

当我给出href的实际url路径时,它调用了funcion,但是没有传递该值。

提前感谢任何想法或例子。

2 个答案:

答案 0 :(得分:0)

你应该form_close()是一回事;然后将“控制器/方法”改为实际控制器&amp;方法名称

因为您的锚标记实际上不是锚,href =“#”

答案 1 :(得分: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();    
    ?>
    

仅供参考:form_hidden()不接受参数中的属性。这与此无关。

<强> HTML:

  • 您必须使 <a> 无法点击。

    <a href="javascript:void(0)" onclick="handler();">Submit</a> 
    

<强> Javascript:

  • 无需通过javascript传递隐藏值。所以,我删除了那一行。

    <script type="text/javascript">
        function handler()
        {      
            document.formname.submit();
        }
    </script>
    

现在表单提交将起作用,您可以使用 $this->input->post("somevalue") 来捕获值。

希望这会有所帮助:)