简体   繁体   English

提交表单时Codeigniter JavaScript问题

[英]Codeigniter JavaScript issue when submitting a form

I have this form in my view 我认为此表格是

<form name="login" action="<?php echo base_url(); ?>households/filter" id="contactForm" method="POST">
                <span class="search-options search-field">
                    <select id="city" name="city" class="filter-field">
                        <option selected="" value="-1">
                        <?php echo $this->lang->line("Filter By City");?>     
                        </option>
                        <option value="Barcelona">Barcelona</option><option value="Madrid">Madrid</option><option value="Valencia">Valencia</option>
                    </select>
                </span>
</form>

and here is the JavaScript for submiting the form 这是提交表单的JavaScript

$(document).ready(function() {
        var urlmenu = document.getElementById( 'city' );
            urlmenu.onchange = function() {
                 var myform = document.getElementById('contactForm');
                 myform.submit();
        };
     });

but it not sending anything to the POST My controller is like 但是它没有发送任何东西到POST我的控制器就像

function filter() {
    var_dump($this->input->post());
    exit;
}

Can you help me, why am I getting 你能帮助我,我为什么得到

boolean false

I would comment but its too long for it, try this code I use it for exactly same thing I guess. 我会发表评论,但它的时间太长了,请尝试将此代码用于我猜完全相同的事情。

note that I use bootstrap 请注意,我使用引导程序

HTML HTML

<form action="localhost/etc" method="post" accept-charset="utf-8" class="form-horizontal">                      
    <div class="control-group">
        <label class="control-label">Language</label>
        <div class="controls">
            <select name="language" class="language" id="admin-category">
                <option value="1" selected="selected">Moonlanguage</option>
                <option value="2">English</option>
                <option value="3">Deutsch</option>
            </select>                               
        </div>
    </div>                      
</form>

JavaScript (jQuery) JavaScript(jQuery)

$('#admin-category.language').change(
    function(){
         $(this).closest('form').trigger('submit');
});

The most importatnt parts are id and class of a <select> . 最重要的部分是<select> idclass

You can't reference that function like that, or iterate through it. 您不能像那样引用该函数或对其进行迭代。

You need to provide an index, eg $this->input->post('field_name') . 您需要提供一个索引,例如$this->input->post('field_name')

If you want to access all post data, you can use the $_POST variable. 如果要访问所有发布数据,可以使用$_POST变量。

Edit: 编辑:

In CI 2.1+ you can do the following. 在CI 2.1+中,您可以执行以下操作。

$data = $this->input->post(NULL, TRUE); // Returns all POST items with XSS filter
$data = $this->input->post();           // Returns all POST items without XSS filter 

Try to do this 尝试做这个

$(document).ready(function() {
    document.getElementById('city').onchange( function(){ 
        document.getElementById('contactForm').submit();
    }); 
 });

function filter() {
    echo $this->input->post('city');
    exit;
}

use predifined form methods in codeigniter: 在codeigniter中使用预定义的表单方法:

<?php $attr = array('name'=>'login', 'id=>'contactForm');?>
<?php echo form_open('households/filter', $attr);?>

instead of your form syntax: 而不是表单语法:

<form name="login" action="<?php echo base_url(); ?>households/filter" id="contactForm" method="POST">

base_url is used to add external entities such as images, scripts, or css to the page. base_url用于将外部实体(例如图像,脚本或CSS)添加到页面。

site_url is used specify a controller in codeigniter. site_url用于在codeigniter中指定一个控制器。

in form_open() method there is no need to use site_url , the first parameter is automatically treated as controller.... form_open()方法中,无需使用site_url ,第一个参数将自动视为控制器。

for submission via jquery ajax: 通过jquery ajax提交:

$(document).ready(function() {

   $('#contactForm').submit(function(e) {
      e.preventDefault();
      $.post("<?php echo site_url('households/filter');?>",
      {
          city: $('#city').val()
      },
      function(response)
      {
         //ajax response area
      });
   });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM