2012-03-27 71 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