【发布时间】:2012-12-04 17:34:53
【问题描述】:
我有点发疯了,因为我对正在发生的事情一无所知。经过大量的挖掘,我相信我所做的一切都是应该的。
情况
我正在尝试通过 AJAX 向服务器发送用户创建表单,而 codeIgniter 甚至无法通过这部分
if($this->input->post('blnAjax')) { // do something }
我已经成功地将 AJAX 方面的东西整合到客户端中,因为它从服务器获取内容几乎没有问题。以下是通话中涉及的一些细节:
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);
}
});
},
Ajax 请求
一切都在客户端上顺利运行,使带有 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';
感谢您花时间阅读我的问题
【问题讨论】:
-
@John B - 我已按要求添加了 javascript URL 请求代码。
-
所以您已经验证 ajax 使用控制台成功发布到控制器,对吗?
-
@John B - 这是一个正确的假设。我的问题中标记为 AJAX 请求的那部分是发送的参数,如果控制器没有检测到表单发送,它最终会返回一个带有表单的默认 JSON 集,等等。
-
你试过 var_dump($_POST);exit;或 var_dump($this->input->post());页面加载后在控制器内部查看发布数据是否正在生成?
-
@Jonh B - 非常感谢您在调试时一直支持我并提供帮助;现在问题解决了。事实证明,我现在工作的客户正在使用 CodeIgniter 模块来进一步支持语言,并且它一直在重写 URI,并且数据肯定已经被转储了。再次感谢您的帮助
标签: ajax codeigniter validation