У меня проблема с запутанностью. У меня есть PHP-скрипт, который опробовает другой скрипт PHP через Prototype. Теперь, когда я просматриваю эту страницу, когда все нормально, и все это хорошо реагирует, но когда я второй раз опроса, он возвращает нечетный ответ.Прототип AJAX собирает неправильный ответ от PHP
Что у меня есть кусок текста:
blah £ £
Теперь, когда это проходит через Prototype первый раз вокруг он кодирует строку правильно с помощью функции побега. Полный код отображается здесь (переменная 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 сохраняет информацию (фрагмент текста) к БД и reponds с текстом. Затем Prototype устанавливает содержимое div в возвращаемый текст.
Когда я иду, чтобы отправить его снова, все будет в порядке до предупреждения (t.responseText); когда прототип показывает некоторые неокрашенные символы вместо £. Самое странное в том, что информация в поле базы данных по-прежнему остается бла-бэ (что правильно), но прототип отвечает blah (?) (?) (Символы (?) - это разграниченные символьные разделители).
Я пришел к выводу, что PHP дает правильную информацию, но по какой-то причине прототип подбирает неправильную информацию ... но нет ничего, что могло бы сделать это между двумя, которые меня действительно запутали. Будучи новичком на прототипе, я не настолько разбираюсь в этом.
Спасибо за любую помощь,
Я сделал все эти предупреждения (t.responseText); в ответе ajax, который вы видите в коде exmaple, где он запутывается, вывод php отлично проверяется вводом базы данных. Если я использую htmlspecialchars на стороне сервера, я могу получить £, чтобы показать, что текст и прототип не будут беспорядочны с ним, но как только я использую текст, нормальный прототип любит его менять – Sammaye
, если я использую encodeURIComponent вместо того, чтобы убежать от него. Но на стороне php он ставит переднюю часть £ – Sammaye
. Еще страннее, поскольку, если я не использую и не декодирую, или что-то еще, то во втором опросе прототипа страницы php изменит символ unkown на строку unicode как:% uFFFD, которая запутывает как Что ж – Sammaye