在我的HTML中,當用戶從下拉選項中進行選擇時,所選項目將存儲在Javascript變量中。我試圖在CodeIgniter中將這個值傳遞給我的控制器變量,但是它失敗了。無法將Javascript數組值傳遞給Codeigniter控制器
這裏是我的HTML代碼:
<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"/>
下面是save_appchangeteto)我的JavaScript代碼(:
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);
});
但在我的控制器中,根本沒有通過tetoApprover
。執行的代碼是低於其他內部的一個,這意味着審批的變量沒有價值可言:
$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);
}
我一直工作在這幾天,但找不到我哪裏錯了。請幫忙。
UPDATE:
我已經證實,push_approverteto()
工作正常,因爲populate_approverteto()
成功更新顯示在審批者的名單。
換句話說,這些值已成功保存在變量tetoApprover
中。
但是,它無法傳遞給控制器變量$post['approvers']
。這是我的主要問題,因爲我無法將用戶提供的值保存到我的數據庫中。