我正在编写脚本,在jquery的帮助下将值提交到db。 在此代码中不使用循环,脚本工作正常
PHP:
<input type="text" class="form-control text-center" name="<?php echo 'rid' ?>" value="<?php echo $roww['id']; ?>">
但是当我使用循环时,jquery不起作用,同样值也没有插入db。 我希望所有值都能在一行中保存到db中。 但它现在正在努力
查看:
<?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;
}
答案 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>
所以,现在你的功能将是这样的:
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;
}
}
希望这能解决您的问题