Акценты отправляются с JQuery AJAX-запросом и codeigniter - PullRequest
1 голос
/ 28 марта 2012

Я создаю базовую форму с помощью ajax submit, используя jquery framework. Это мой код:

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

И я использую PHP-файл с простым var_dump($_POST), чтобы показать результат.

Когда я тестирую, опрашивая простую страницу PHP, она отлично работает.

Когда я тестирую, опрашивая функцию из моего контроллера контактов в CodeIgniter, все элементы моей формы, которые являются акцентами (не специальными символами, только акценты, например, "éàèù"), элемент пуст.

Для информации все мои файлы имеют кодировку UTF-8.

Кто-то узнает, как я могу решить эту проблему? Спасибо,

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Я нашел проблему.

Действительно, платформа CodeIgniter обрабатывает «очистку» входных переменных в библиотеке ввода.

Поскольку я разрабатываю с моего сервера MAMP, на нем есть ошибка. Необходимо было изменить кодировку кодировки UTF-8 на utf-8, и теперь она работает.

Спасибо за ваш интерес.

0 голосов
/ 28 марта 2012

Первое, что нужно проверить: при таких условиях загружается библиотека UTF8 в codeigniter. Проверьте их один за другим и проверьте, все ли они возвращают 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);
    }
...