Jquery Ajax Call портит мои данные - PullRequest
1 голос
/ 19 января 2011


помогите, пожалуйста, объяснить, почему мои ajax-вызовы через jquery портят мои данные?я уже настроил свою базу данных mysql для использования utf8_general_ci ,

  1. я уже пытался добавить элементы в свою базу данных mysql через phpmyadmin, и китайские символы завершены и не имеют изменений.
  2. Я также попытался создать простую страницу php, чтобы вставить тот же набор китайских символов, запустить страницу php и проверить вывод в phpmyadmin .. опять же, без изменений для того же набора
  3. На этот раз вставить то же самоенабор китайских символов с помощью jquery $ .ajax, но сначала не отправляйте в mysql, а печатайте в html. ЖЕ набор и никаких изменений не делается ...
  4. При использовании страницы php в # 2 используйте ajax и INSERTтеперь в базу данных ... некоторые символы теперь отсутствуют и были заменены на '???' ..

Есть идеи, что происходит?я также попытался повторить мой запрос $, и он подсказывает мне символ, который уже пропал до того, как он был фактически отправлен в базу данных

спасибо

1 Ответ

4 голосов
/ 19 января 2011

, чтобы обойти это, попробуйте установить тип ocntent в запросе ajax:

...
    jQuery.ajax({
        type: "POST",
        url: "../ajax/setting",
        cache: false,
        dataType: "json",
        data: "user.id=current&update=true&user.setting=" + key + "&user.settingValue=" + escape(value),
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        beforeSend: function(x) {
            if((x) && (x.overrideMimeType))
                x.overrideMimeType("application/j-son; charset=UTF-8");
        },
...

трюк beforeSend также может помочь в вашем случае. Я обнаружил, что в зависимости от того, как вы отправляете данные, они могут быть закодированы совсем по-другому. Если вы хотите отправить длинные данные с помощью charset, сначала убедитесь, что они закодированы:

т. submitdata - это строка в формате json:

submitType = "POST";
submitdata = "data=" + encodeURIComponent(submitdata);
jQuery.ajax({
    type: submitType,
    url: url,
    cache: false,
    data: submitdata,
    dataType: "json",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    beforeSend: function(x) {
        if((x) && (x.overrideMimeType))
            x.overrideMimeType("application/j-son; charset=UTF-8");
        return true;
    },

на сервере беру параметр запроса «data» и преобразовываю его в объект.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...