Я отправляю сообщение через json следующим образом:
function getMessage() {
$response = [
'message' => sprintf('email sent successfully to %s', '<em>[email protected]</em>'),
];
echo json_encode($response);
}
и читает переменную следующим образом:
<span id = "mymessage"></span>
$(function() {
$.ajax({
type: 'get',
url: 'getMessage',
dataType: 'json',
success: function(res) {
$('#mymessage').text(res.message);
},
error: function(err) {
console.info(err.responseText);
}
});
});
Я ожидал такого результата: письмо успешно отправлено на официальный@mysite.com
но вместо этого я получаю такой результат: email sent successfully to <em>[email protected]</em>
почему тег <em> по-прежнему отображается как обычная строка, а не делает текст курсивом?
потому что строка хранится в переменной. Я использую codeigniter, так что это в помощнике по языку. это из-за sprintf()?
вы пробовали прямую строку?
да. Я только что попытался изменить код на простую строку, но тег <em> все еще там






Попробуйте это ниже изменения, первая прямая строка для ответа и html() в js
php:
function getMessage() {
$response = [
'message' => 'email sent successfully to '.'<em>[email protected]</em>'
];
echo json_encode($response);
exit();
}
js:
$(function() {
$.ajax({
type: 'get',
url: 'getMessage',
dataType: 'json',
success: function(res) {
$('#mymessage').html(res.message);
},
error: function(err) {
console.info(err.responseText);
}
});
});
если это будет работать с .html(), вы также можете использовать свой sprintf() в php
Спасибо. .html() в части js работает даже с sprintf() в PHP. Я думал <span> всегда должен использовать .text()? в любом случае.. пока это работает, а?
почему вы используете
sprintf()почему вы не используете прямую строку?