2012-03-27 63 views
1

我创建一个基本的表单与Ajax提交使用jQuery框架。 这是我的代码:口音提交jquery ajax请求和codeigniter

$('form#contact_form').submit(function() { 
    $.ajax({ 
     type: $(this).attr('method'), 
     url: $(this).attr('action'), 
     data: $(this).serialize(), 
     success: function(data) { 
     } 
    }); 
}); 

而且我用简单的var_dump($_POST) PHP文件显示结果。

当我通过询问简单的PHP页面进行测试时,它工作正常。

当我通过CodeIgniter上的我的联系人控制器的询问函数进行测试时,我的表单中的所有项目都是重音符(不是特殊字符,只有像“éàèù”),项目是空的。

有关信息,我的所有文件都使用UTF-8编码。

有人会知道我该如何解决这个问题? 谢谢,

+0

你在控制器中使用$ _POST或$ this-> input-> post()吗?你可以用萤火虫或铬开发工具检查发布数据的真实外观吗?而FYI,提交事件没有'return false;'行。 – 2012-03-27 23:59:35

+0

我试着用$ _POST和$ this-> input-> post()和我有同样的问题。 – alexmngn 2012-03-28 08:44:22

+0

有关信息,在我的开发人员工具中,我的所有参数都已正确发送到我的控制器 – alexmngn 2012-03-28 09:04:34

回答

0

我发现了这个问题。

的确,CodeIgniter框架处理输入变量到输入库的“清理”。

因为我从我的MAMP服务器开发,有一个错误。有必要将编码UTF-8的字符集更改为utf-8,现在它正在工作。

感谢您的关注。

+0

您是如何进行此更改的?我也遇到同样的问题! – Nyxynyx 2012-06-20 16:41:55

0

第一件事要检查:此条件加载codeigniter中的UTF8库。逐个测试它们,并检查它们是否都返回true。

if (
     preg_match('/./u', 'é') === 1     // PCRE must support UTF-8 
     AND function_exists('iconv')     // iconv must be installed 
     AND ini_get('mbstring.func_overload') != 1  // Multibyte string function overloading cannot be enabled 
     AND $CFG->item('charset') == 'UTF-8'   // Application charset must be UTF-8 
     ) 

其次,有一个在库函数/ Input.php名为 “_clean_input_data”。这个功能可能在数据到达控制器之前清理数据。

里面有三种清洁类型。

// Clean UTF-8 if supported 
    if (UTF8_ENABLED === TRUE) 
    { 
     $str = $this->uni->clean_string($str); 
    } 

    // Remove control characters 
    $str = remove_invisible_characters($str); 

    // Should we filter the input data? 
    if ($this->_enable_xss === TRUE) 
    { 
     $str = $this->security->xss_clean($str); 
    } 
+0

我测试了您的测试,并且返回结果为true,因此所有口音都完美地传递。我觉得我的数据在它通过ajax发送的那一刻和它通过函数接收的那一刻之间是干净的,所以在父控制器中也许..我继续搜索解决方案 – alexmngn 2012-03-28 11:45:34