Прототип AJAX получает неправильный ответ от PHP - PullRequest
0 голосов
/ 27 июля 2010

У меня действительно запутанная проблема. У меня есть PHP-скрипт, который опрашивает другой PHP-скрипт через Prototype. Теперь, когда я опрашиваю эту страницу один раз, все в порядке, и все отвечает нормально, но когда я опрашиваю второй раз, он возвращает странный ответ.

У меня есть фрагмент текста:

blah £ £

Теперь, когда это происходит через Prototype, он кодирует строку правильно, используя функцию escape. Полный код отображается здесь (переменная escape_function - id_opt ['escape_function']):

escape_function:        escape, // or encodeURIComponent

var new_text = id_opt['escape_function']($F(id + '_edit'));
var params = 'id=' + id + '&content=' + new_text;
if(id_opt['type'] == 'select') {
    params += '&option_name=' + $(id + '_option_' + new_text).innerHTML;
}

var ajax_req = new Ajax.Request(
    id_opt['save_url'],
    {
        method: 'post',
        postBody: params,
        onSuccess: function(t) { alert(t.responseText); EditInPlace._saveComplete(id, t); },
        onFailure: function(t) { EditInPlace._saveFailed(id, t); }
    }
);

Опрошенная php-страница сохраняет информацию (фрагмент текста) в БД и отвечает текстом. Затем Prototype устанавливает содержимое div для возвращаемого текста.

Когда я снова отправляю его, все в порядке, пока не появится предупреждение (t.responseText); когда прототип показывает несколько неизвестных символов вместо & pound ;. Самое странное, что информация в поле базы данных по-прежнему бла £ £ (что правильно), но прототип отвечает бла (?) (?) (Символы (?) - это неизвестные разделители символов).

Я пришел к выводу, что PHP отображает правильную информацию, но по какой-то причине прототип собирает неверную информацию ... но между ними ничего не поделаешь, что меня действительно запутало. Будучи новичком в прототипе, я не настолько хорош в решении этой проблемы.

Спасибо за любую помощь,

Ответы [ 2 ]

0 голосов
/ 04 августа 2010

Я решил переписать скрипт в JQuery, и он работал просто отлично.Я был близок к тому, чтобы заставить его работать в Prototype с использованием типов кодирования, но он добавлял бы акцент перед каждым знаком фунта, что было недостаточно.

Так что теперь я переписал его, все работает отлично без всяких проблем.

0 голосов
/ 27 июля 2010

Я бы использовал такой инструмент, как FireBug или Charles , чтобы оценить трафик, исходящий из вашего сценария PHP (если вы этого еще не сделали). Если все хорошо, проверьте код клиента, используя операторы alert(), чтобы увидеть, когда неправильный перевод произойдет, чтобы подтвердить ваши подозрения в прототипе.

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