在codeigniter中使用循环时jQuery无法正常工作

时间:2017-06-22 00:46:52

标签: javascript php jquery codeigniter

我正在编写脚本,在jquery的帮助下将值提交到db。 在此代码中不使用循环,脚本工作正常

PHP:

<input type="text" class="form-control text-center" name="<?php echo 'rid' ?>" value="<?php echo $roww['id']; ?>">

但是当我使用循环时,jquery不起作用,同样值也没有插入db。 我希望所有值都能在一行中保存到db中。 但它现在正在努力 DB where values save

form interface to submit

查看:

<?php echo form_open(site_url('start'), array('id' => 'login_form')); ?>
<?php $i=0; $queryw = $this->db->query('SELECT * FROM plans');
    foreach ($queryw->result_array() as $roww) { 
?>
<div style="float:left; width:40px; margin-left:10px">
    <div class="form-group">
        <input type="text" class="form-control text-center" name="<?php echo 'rid'.$i ?>" value="<?php echo $roww['id']; ?>">
    </div>
</div>
<?php $i++; } ?>
<div class="error" id="logerror"></div> 
<button type="submit" id="btn-login" class="btn btn-warning btn-lg">Submit</button>    

JS:

<script>  
$(document).ready(function(){
    $('#login_form').validate();   
    $(document).on('click','#btn-login',function(){
        var url = "<?php echo site_url('start/user_login');?>";       
            if($('#login_form').valid()){
                $('#logerror').html('<img src="<?php echo base_url();?>themes/images/btn-ajax-loader.gif" align="absmiddle">');  
                $.ajax({
                    type: "POST",
                    url: url,
                    data: $("#login_form").serialize(), // serializes the form's elements.
                    success: function(data)
                    {
                        if(data==1) 
                        setTimeout('window.location.href = "<?php echo site_url('welcome/profile'); ?>"; ',4000);
                        else  $('#logerror').html('Error: some values are missing.');
                        $('#logerror').addClass("error");
                    }
                });
            }
        return false;
    });
});

控制器:

public function index() 
{
    $this->template->loadContent("game/start.php");
}

public function user_login()
{
    if($_POST['rid'.$i] == TRUE) :
        $datas = array(
            'code' => $_POST['rid'.$i]
            );
        $this->db->insert('pin', $datas);
            echo 1;
    else :
        echo 0;
    endif;          
}   

1 个答案:

答案 0 :(得分:0)

首先,我认为你的函数user_login()有问题。问题是$ i。 user_login()如何知道$ i或其中包含的值。 $ i永远不会从你的ajax代码发送到user_login()。当然不会有PHP错误,但你的答案总是“0&#39; 0即错误:缺少某些值。&#39;在你的情况下。

您的案例的解决方案将是: 1.将aj值从您的ajax代码发送到user_login()。您可以通过在表单中​​发送$ i的隐藏输入值来执行此操作,或者您可以使用其他替代方法。

<?php echo form_open(site_url('start'), array('id' => 'login_form')); ?>
<?php $i=0; $queryw = $this->db->query('SELECT * FROM plans');
foreach ($queryw->result_array() as $roww) { 
?>
<div style="float:left; width:40px; margin-left:10px">
    <div class="form-group">
        <input type="text" class="form-control text-center" name="<?php echo 'rid'.$i ?>" value="<?php echo $roww['id']; ?>">
    </div>
</div>
<?php $i++; } ?>

// added line
<input type="hidden" name="loop_val" value="<?=$i;?>" />

<div class="error" id="logerror"></div> 
<button type="submit" id="btn-login" class="btn btn-warning btn-lg">Submit</button>  
  1. 所以,现在你的功能将是这样的:

    public function user_login()
    {
        $j = 0; // for checking true values
        for($i=0;$i<=$_POST['loop_val'];$i++) {
            if($_POST['rid'.$i] == TRUE) {
                $datas = array(
                    'code' => $_POST['rid'.$i]
                );
                $this->db->insert('pin', $datas);
                $j++;
            }
        }
        if($j != 0) {
            echo 1;
        } else {
           echo 0;
        }
    }
    
  2. 希望这能解决您的问题