我在这里有点疯狂,因为我真的想要发生什么事情。经过大量的挖掘,我相信我正在做所有的事情。
我正在尝试通过AJAX将用户创建表单发送到服务器,而codeIgniter甚至无法通过此部分
if($this->input->post('blnAjax')) { // do something }
我已成功将AJAX方面的内容整合到客户端,因为它从服务器获取内容时几乎没有问题。以下是电话中涉及的一些细节:
ajax代码是超出此问题范围的更大框架的一部分,但就实际调用函数而言,事件有event.preventDefault(); event.stopImmediatePropagation();
来阻止它运行。可以访问URL,并且已将序列化的请求类型设置为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';
感谢您花时间阅读我的问题
答案 0 :(得分:0)
答案绝不像看起来那么简单!我的客户端正在使用CodeIgniter mod来重写URI,从而转储从ajax查询传递的数据。执行获取和“真正的”POST查询时,这不是问题。
因此,如果您使用Wiredesignz - Language Identifier,请注意它会影响您的查询
我如何修复它,我使用自定义页面控制器,但理论是相同的:
$this->config->item('language_abbr');
可以通过常量或直接回显到javascript(如果在同一页面上)params.strBaseURL + params.strLanguage + '/' + params.strRequestURL;
你现在应该发现事情很好。我希望这有帮助,没有其他人必须花费一个小小的永恒才能找到它