无法将数组值从Javascript传递到Codeigniter控制器
在my HTML中,当用户从下拉选项中选择时,所选项目存储在Javascript变量中。我试图将此值传递给CodeIgniter中的控制器变量,但失败了 这是我的HTML代码:无法将数组值从Javascript传递到Codeigniter控制器,javascript,php,ajax,codeigniter,parameters,Javascript,Php,Ajax,Codeigniter,Parameters,在my HTML中,当用户从下拉选项中选择时,所选项目存储在Javascript变量中。我试图将此值传递给CodeIgniter中的控制器变量,但失败了 这是我的HTML代码: <form name="change_app_formTrader" id="change_app_formTrader"> <label>Approver Name</label> <select name="app_id[]"> <
<form name="change_app_formTrader" id="change_app_formTrader">
<label>Approver Name</label>
<select name="app_id[]">
<option value="0">select approver</option>
<option value="approver1">Approver One</option>
<option value="approver2">Approver Two</option>
<option value="approver3">Approver Three</option>
}
?>
</select>
</form>
<input type="button" onclick="save_appchangeteto()" value="Save Changes"/>
var tetoApprover;
var appword;
function save_appchangeteto(){
tetoApprover = [];
appword = '';
var appid = 0;
$('form[name="change_app_formTrader"]').find(':input').each(function(){
appid = $(this).val();
appword = this.options[this.selectedIndex].text;
push_approverteto(appid,appword);
});
populate_approverteto();
} /*save_appchangeteto()*/
function push_approverteto(appid,appword){
tetoApprover.push({
'appid':appid,
'appword':appword
});
}
function populate_approverteto(){
var htm = '';
var x = 0;
$.each(tetoApprover,function(){
x+=1;
htm += '<tr>';
htm += '<td>'+x+'</td>';
htm += '<td>'+this.appword+'</td>';
htm +='<td></td>';
htm +='<td></td>';
htm += '</tr>';
});
$('#approverTblTrader').html(htm);
} /*populate_approverteto*/
$('#submitTradersRequest').click(function(){
$('.rc-loader').html('<img src="'+BASE_URL+'assets/img/ajax-loader.gif"/> Please wait..');
$(this).prop('disabled',true);
tetoApprover = (tetoApprover.length<1)?1:tetoApprover;
$.ajax({
url: BASE_URL+'create/process',
type: "POST",
data: {approvers:tetoApprover},
success: function(data){
var response = $.parseJSON(data);
if(response.status!='Success'){
$('.rc-loader').html('<span class="alert alert-error">'+response.msg+'</span>');
}
}
}).fail(function() { alert('Error'); });
$(this).prop('disabled',false);
});
$post = $this->input->post();
if($post['approvers']){
foreach($post['approvers'] as $val){
$count++;
$status = 0;
$token = sha1(rand().date('m/d/y'));
if($count==1){
$status = 1;
}
$params = array('scalar'=>array(
$reqid,
$val['appid']
)
);
$this->create_model->updatestatus($params);
}
}
else { //this is where the process currently goes
$val['appid'] = 4; //test
$params = array('scalar'=>array(
$reqid,
$val['appid']
));
$this->create_model->updatestatus($params);
}
这件事我已经做了好几天了,但找不到哪里出了问题。请帮忙
更新:
<form name="change_app_formTrader" id="change_app_formTrader">
<label>Approver Name</label>
<select name="app_id[]">
<option value="0">select approver</option>
<option value="approver1">Approver One</option>
<option value="approver2">Approver Two</option>
<option value="approver3">Approver Three</option>
}
?>
</select>
</form>
<input type="button" onclick="save_appchangeteto()" value="Save Changes"/>
var tetoApprover;
var appword;
function save_appchangeteto(){
tetoApprover = [];
appword = '';
var appid = 0;
$('form[name="change_app_formTrader"]').find(':input').each(function(){
appid = $(this).val();
appword = this.options[this.selectedIndex].text;
push_approverteto(appid,appword);
});
populate_approverteto();
} /*save_appchangeteto()*/
function push_approverteto(appid,appword){
tetoApprover.push({
'appid':appid,
'appword':appword
});
}
function populate_approverteto(){
var htm = '';
var x = 0;
$.each(tetoApprover,function(){
x+=1;
htm += '<tr>';
htm += '<td>'+x+'</td>';
htm += '<td>'+this.appword+'</td>';
htm +='<td></td>';
htm +='<td></td>';
htm += '</tr>';
});
$('#approverTblTrader').html(htm);
} /*populate_approverteto*/
$('#submitTradersRequest').click(function(){
$('.rc-loader').html('<img src="'+BASE_URL+'assets/img/ajax-loader.gif"/> Please wait..');
$(this).prop('disabled',true);
tetoApprover = (tetoApprover.length<1)?1:tetoApprover;
$.ajax({
url: BASE_URL+'create/process',
type: "POST",
data: {approvers:tetoApprover},
success: function(data){
var response = $.parseJSON(data);
if(response.status!='Success'){
$('.rc-loader').html('<span class="alert alert-error">'+response.msg+'</span>');
}
}
}).fail(function() { alert('Error'); });
$(this).prop('disabled',false);
});
$post = $this->input->post();
if($post['approvers']){
foreach($post['approvers'] as $val){
$count++;
$status = 0;
$token = sha1(rand().date('m/d/y'));
if($count==1){
$status = 1;
}
$params = array('scalar'=>array(
$reqid,
$val['appid']
)
);
$this->create_model->updatestatus($params);
}
}
else { //this is where the process currently goes
$val['appid'] = 4; //test
$params = array('scalar'=>array(
$reqid,
$val['appid']
));
$this->create_model->updatestatus($params);
}
我已确认push\u approverteto()
工作正常,因为populate\u approverteto()
正在成功更新显示屏上的审批人列表
换句话说,值成功保存在变量tetoApprover
中
但是,它无法传递给控制器变量
$post['approvers']
。这是我的主要问题,因为我无法将用户给定的值保存到数据库中。我认为您在函数param中有错误
public function create($process='0')
{
if($proces='0' or !isset($proces)) return false;
//do something
}
并更新您的ajax参数:
url: BASE_URL+'create/1'
看。在本例中,ajax中的1方法是php中的$process。
如果您试图将ajax请求发送到*BASE_URL+'create/process'*URL,则会出现php错误,因为请求中的param not isset或type of param not type of param
附言:对不起我的英语