Reputation: 453
I am bringing some data from the database, and some of them have HTML
tags such as "<p>Hello</ p>
". However, when step data through to return it shows json_encode in "<p>Hello</p>
". What should I do to return the same data that was saved in the database?
PHP:
$retorna = array(
'conteudo_programatico' => $conteudo_programatico,
'investimento' => $investimento,
'coordenacao' => $coordenacao,
'importante' => $importante
);
echo json_encode($retorna);
AJAX:
$(function(){
$("button").click(function(){
var id = $(this).attr("id");
$.ajax({
type: "POST",
data: {id: id},
url: "paginas/ajax/form.php",
dataType: "json",
success: function(data){
$("#cursos").slideDown();
$(".call-conteudo").text(data['conteudo_programatico']);
$(".call-investimento").text(data['investimento']);
$(".call-coordenacao").text(data['coordenacao']);
$(".call-importante").text(data['importante']);
},
});
});
});
Upvotes: 2
Views: 578
Reputation: 91734
The problem is your use of jQuery's .text()
:
$(".call-conteudo").text(data['conteudo_programatico']);
// etc.
According to the manual:
We need to be aware that this method escapes the string provided as necessary so that it will render correctly in HTML. To do so, it calls the DOM method .createTextNode(), does not interpret the string as HTML
...
The code
$( "div.demo-container" ).text( "<p>This is a test.</p>" );
will produce the following DOM output:
1 <div class="demo-container">
2 <p>This is a test.</p>
3 </div>
You need html()
:
$(".call-conteudo").html(data['conteudo_programatico']);
// etc.
Upvotes: 3