Codeigniter $this->input->post() 对于提交输入是空的
Codeigniter $this->input->post() is empty for submit input
<form method="post" id="user_form">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Add User</h4>
</div>
<div class="modal-body">
<label>Enter First Name</label>
<input type="text" name="first_name" id="first_name" class="form-control" />
<br />
<label>Enter Last Name</label>
<input type="text" name="last_name" id="last_name" class="form-control" />
<br />
<label>Select User Image</label>
<input type="file" name="user_image" id="user_image" />
<span id="user_uploaded_image"></span>
</div>
<div class="modal-footer">
<input type="hidden" name="user_id" id="user_id" />
<input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</form>
此视图中的脚本:
$.ajax({
url:"<?php echo base_url() . 'raportowanie/user_action'?>",
method:'POST',
data:new FormData(this),
contentType:false,
processData:false,
success:function(data)
{
alert(data);
$('#user_form')[0].reset();
$('#userModal').modal('hide');
dataTable.ajax.reload();
}
});
在控制器中
function user_action(){
echo 'Action is: '.$this->input->post('action');
}
问题是 $this->input->post('action') 没有 return 值输入。如果我更改文本上的输入类型,这个 $this->input->post('action') 是可以的并且 return value = Add。为什么这不适用于输入 type="submit" ?我怎样才能得到我输入的值。请帮忙。
提交输入类型仅用于提交所有表单值的提交按钮,通常不用于发送数据本身。 value 属性用作按钮的标签。
如果你想查看是否有 post 请求到你的控制器,你可以使用这样的东西:
function user_action()
{
if ($this->input->server('REQUEST_METHOD') == 'POST')
{
// Your other inputs here
echo 'First Name is: '.$this->input->post('first_name');
echo 'Last Name is: '.$this->input->post('last_name');
echo 'User Image is: '.$this->input->post('user_image');
echo 'User ID is: '.$this->input->post('user_id');
}
}
或者如果使用 Codeigniter v4,您也可以使用 $this->request->isAJAX()
。我不确定这是否在 v3 中可用。
更新
如果您想检查它是否 add/edit 我建议添加一个隐藏输入并更改该值,如下所示:
<input type="hidden" name="method" value="add">
然后你可以在controller中查看:
if ($this->input->post('method') == 'add')
{
// Adding a record
} else {
// Editing a record
}
使用隐藏字段传递值,而不是提交按钮
您可以创建一个字段值,并根据您单击的最后一个按钮更改该值
<form>
<input type = "hidden" id = "btn_type" name = "btn_type">
<button type="submit" class="btn btn-primary" id = "btn_add">Add</button>
<button type="submit" class="btn btn-primary" id = "btn_edit">Edit</button>
</form>
单击按钮时更改隐藏值
$(document).on("click", "#btn_add", function(event){
$('#btn_type').val('Add');
});
$(document).on("click", "#btn_edit", function(event){
$('#btn_type').val('Edit');
});
并在您的控制器中获取值
$buttonvalue = $this->input->post('btn_type',true);
非常感谢您的帮助。现在我看到了:
<input type="hidden" name="user_id" id="user_id" />
<input type="hidden" name="method" id="method" value="Add">
<input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
我在 JS 脚本中设置值添加或编辑
$('#action').val("Add"); \ or Edit
$('#method').val("Add"); \ or Edit
在控制器中
$this->input->post('method')
这非常有效。谢谢!!!
<form method="post" id="user_form">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Add User</h4>
</div>
<div class="modal-body">
<label>Enter First Name</label>
<input type="text" name="first_name" id="first_name" class="form-control" />
<br />
<label>Enter Last Name</label>
<input type="text" name="last_name" id="last_name" class="form-control" />
<br />
<label>Select User Image</label>
<input type="file" name="user_image" id="user_image" />
<span id="user_uploaded_image"></span>
</div>
<div class="modal-footer">
<input type="hidden" name="user_id" id="user_id" />
<input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</form>
此视图中的脚本:
$.ajax({
url:"<?php echo base_url() . 'raportowanie/user_action'?>",
method:'POST',
data:new FormData(this),
contentType:false,
processData:false,
success:function(data)
{
alert(data);
$('#user_form')[0].reset();
$('#userModal').modal('hide');
dataTable.ajax.reload();
}
});
在控制器中
function user_action(){
echo 'Action is: '.$this->input->post('action');
}
问题是 $this->input->post('action') 没有 return 值输入。如果我更改文本上的输入类型,这个 $this->input->post('action') 是可以的并且 return value = Add。为什么这不适用于输入 type="submit" ?我怎样才能得到我输入的值。请帮忙。
提交输入类型仅用于提交所有表单值的提交按钮,通常不用于发送数据本身。 value 属性用作按钮的标签。
如果你想查看是否有 post 请求到你的控制器,你可以使用这样的东西:
function user_action()
{
if ($this->input->server('REQUEST_METHOD') == 'POST')
{
// Your other inputs here
echo 'First Name is: '.$this->input->post('first_name');
echo 'Last Name is: '.$this->input->post('last_name');
echo 'User Image is: '.$this->input->post('user_image');
echo 'User ID is: '.$this->input->post('user_id');
}
}
或者如果使用 Codeigniter v4,您也可以使用 $this->request->isAJAX()
。我不确定这是否在 v3 中可用。
更新
如果您想检查它是否 add/edit 我建议添加一个隐藏输入并更改该值,如下所示:
<input type="hidden" name="method" value="add">
然后你可以在controller中查看:
if ($this->input->post('method') == 'add')
{
// Adding a record
} else {
// Editing a record
}
使用隐藏字段传递值,而不是提交按钮
您可以创建一个字段值,并根据您单击的最后一个按钮更改该值
<form>
<input type = "hidden" id = "btn_type" name = "btn_type">
<button type="submit" class="btn btn-primary" id = "btn_add">Add</button>
<button type="submit" class="btn btn-primary" id = "btn_edit">Edit</button>
</form>
单击按钮时更改隐藏值
$(document).on("click", "#btn_add", function(event){
$('#btn_type').val('Add');
});
$(document).on("click", "#btn_edit", function(event){
$('#btn_type').val('Edit');
});
并在您的控制器中获取值
$buttonvalue = $this->input->post('btn_type',true);
非常感谢您的帮助。现在我看到了:
<input type="hidden" name="user_id" id="user_id" />
<input type="hidden" name="method" id="method" value="Add">
<input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
我在 JS 脚本中设置值添加或编辑
$('#action').val("Add"); \ or Edit
$('#method').val("Add"); \ or Edit
在控制器中
$this->input->post('method')
这非常有效。谢谢!!!