我在这里有点疯狂,因为我对正在发生的事情一无所知。经过大量的挖掘,我相信我正在做所有应该做的事情。
情况
我正在尝试通过 AJAX 将用户创建表单发送到服务器,而 codeIgniter 甚至无法通过这部分
if($this->input->post('blnAjax')) { // do something }
我已经成功地将 AJAX 方面的东西整合到客户端中,因为它从服务器获取内容几乎没有问题。以下是通话中涉及的一些细节:
阿贾克斯代码
ajax 代码是超出此问题范围的更大框架的一部分,但就实际调用函数而言,事件必须event.preventDefault(); event.stopImmediatePropagation();
阻止它运行。URL 是可访问的,并且 post 值已被序列化,请求类型设置为 POST
requestpage: function(){
var strURL = params.strBaseURL + params.strRequestURL;
$.ajax({
type: params.strRequestMethod,
url: strURL,
data: params.strRequestParameters,
dataType: 'json',
success: function(json) {
methods.postrequestprocedure(json);
}
});
},
阿贾克斯请求
一切都在客户端上顺利运行,使带有 json 的 XMLHttpRequest 按预期返回。但是,当表单已提交时,我什至没有达到这一点。如果使用 AJAX,Codeigniter 永远不会认为表单已经设置
Parameters application/x-www-form-urlencoded
blnAjax 1
user_login_name[] fred
user_login_name[] ted
user_name[] Fred Flintstone
user_name[] Ted bear
usergroup_id[] 16
usergroup_id[] 16
控制器
在控制器上,关于操作,我已经包含了直到失败点的所有代码。请注意,我已经测试了代码的其他方面并且它们运行良好
public function user_add() {
/* Include extra script files needed for form handling */
$this->view['aryScript'][] = 'jquery.validate.min';
$this->view['aryScript'][] = 'jquery.validate.additional-methods';
/* Include extra CSS files */
$this->view['aryCSS'][] = 'form';
/* First check if the user has correct access rights */
if($this->view['intAccessLevel'] < INT_SUPER_USER_ACCESS_LEVEL) {
$aryResponse['notifications'][] = array('strType' => 'permanent',
'strMessage' => 'Denied!');
}
/* Import extra libraries and helpers */
$this->load->library(array('PasswordHash'));
$this->load->model('UserAdminModel');
$this->view['strTitle'] = 'Add User';
$this->view['aryButtons']['user_add_another'] = array(
'strDisplay' => $this->lang->line('user_add_another')
'strURL' => '#',
'strID' => 'user_add_another',
'aryData' => array('action' => 'form-clone')
);
if($this->input->post('blnAjax')) {
echo 'Big sigh of relief';
感谢您花时间阅读我的问题