Codeigniter没有在jQuery发送上检测表单

时间:2012-12-04 17:34:54

标签: ajax codeigniter validation

我在这里有点疯狂,因为我真的想要发生什么事情。经过大量的挖掘,我相信我正在做所有的事情。

场合

我正在尝试通过AJAX将用户创建表单发送到服务器,而codeIgniter甚至无法通过此部分

if($this->input->post('blnAjax')) { // do something } 我已成功将AJAX方面的内容整合到客户端,因为它从服务器获取内容时几乎没有问题。以下是电话中涉及的一些细节:

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);
        }  
    });
},

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';

感谢您花时间阅读我的问题

1 个答案:

答案 0 :(得分:0)

答案绝不像看起来那么简单!我的客户端正在使用CodeIgniter mod来重写URI,从而转储从ajax查询传递的数据。执行获取和“真正的”POST查询时,这不是问题。

因此,如果您使用Wiredesignz - Language Identifier,请注意它会影响您的查询

我如何修复它,我使用自定义页面控制器,但理论是相同的:

  • 请确保您的javascript函数可用$this->config->item('language_abbr');可以通过常量或直接回显到javascript(如果在同一页面上)
  • 在发送之前修改网址,其内容类似于params.strBaseURL + params.strLanguage + '/' + params.strRequestURL;

你现在应该发现事情很好。我希望这有帮助,没有其他人必须花费一个小小的永恒才能找到它