Возврат фунта (£) от вызова Ajax

Я изо всех сил пытаюсь вернуть знак фунта стерлингов (£) после моего звонка Ajax.

Это вызов jQuery, который у меня есть

(function(d){
   var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_GB/all.js";
   d.getElementsByTagName('head')[0].appendChild(js);
}(document));

$.post('ajax.php?vno=' + new Date().getTime(), {
    action: 'submit'
}, function(res){
    if (res.status) {
        alert(res.post);
        FB.api('/me/feed', 'post', { message: res.post },function(){});
    }
},'json');

В моем PHP-скрипте я возвращаю html_entity_decode("£");, но предупреждение показывает £.

Если я изменю свой код PHP на html_entity_decode("£");, окно предупреждения ничего не покажет

Как я могу заставить оповещение показывать £?


person Damian    schedule 12.01.2014    source источник
comment
Попробуйте вернуть просто £ или £ без html_entity_decode().   -  person BenM    schedule 12.01.2014
comment
'£' ничего не показывает, '' показывает'', поэтому мне нужно использовать jQuery для преобразования в £?   -  person Damian    schedule 12.01.2014


Ответы (1)


Оповещения Javascript не интерпретируют объекты HTML (см. ответ на этот вопрос для пример того, как декодировать объект перед его оповещением.) Если вы просто тестируете с оповещением что-то, что вы фактически собираетесь вставить в веб-страницу HTML, то, если вы видите £, ваш окончательный код должен работать нормально .

Но в любом случае нет большой необходимости использовать сущность. Если кодировка символов для вашего возврата Ajax и вашей веб-страницы установлена ​​​​правильно (например, обе UTF-8), тогда просто возврат '£' должен работать в предупреждении и на странице. Поверьте мне, я британец. У нас на клавиатуре есть клавиша £, и она практически просто работает как символ в современной сети :)

person Matt Gibson    schedule 12.01.2014
comment
Спасибо, Мэтт, я должен был упомянуть, что отправляю ответ на стену пользователя Facebook - FB.api('/me/feed', 'post', { message: res.post },function(){}); - person Damian; 12.01.2014
comment
В этом случае я бы просто использовал стандартный символ UTF-8 £. Facebook с этим справится. Убедитесь, что все, что у вас есть, объявлено как использующее UTF-8. - person Matt Gibson; 12.01.2014
comment
Когда я пытаюсь передать £ обратно, ничего не публикуется на стене. Если я вернусь, он опубликует - person Damian; 12.01.2014
comment
Вы можете обновить свой вопрос, чтобы показать полный код, который на самом деле вызывает вашу проблему, а также указать, какой Facebook SDK и т. д. вы используете. - person Matt Gibson; 12.01.2014
comment
@Damian (Также: ваша веб-страница определенно имеет кодировку UTF-8? т. е. имеет ли она заголовок <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> или эквивалент? И ваш PHP-скрипт отправляет соответствующий заголовок Content-Type, например, header('Content-Type: text/html; charset=utf-8');?) И ваш файл PHP и ваш HTML-файл, сохраненный в кодировке UTF-8? Все должно быть UTF-8 от начала до конца. - person Matt Gibson; 12.01.2014
comment
метатег utf-8. Я не уверен, что вы подразумеваете под файлом php, отправляющим заголовок типа контента для соответствия, он просто возвращает массив в кодировке json - person Damian; 12.01.2014
comment
Когда я использую $arr['post'] = £; чтобы вернуть знак £, глядя на консоль, показывает post: null, поэтому он определенно не возвращает знак £ - person Damian; 12.01.2014