Envisagez plutôt une réponse structurée
Bien que ce que vous demandez soit possible, il existe de bien meilleures façons de procéder. Envisagez plutôt de renvoyer un tableau contenant les données nécessaires pour créer les liens à l'aide d'un script côté client. Construisez l'Ajax pour appeler et ajouter ces liens en conséquence. Vous pourriez étendre ce concept pour inclure plus d'objets configurables, ou construire le html à ajouter et le renvoyer, plutôt que d'essayer d'exécuter le javascript. eval
.
function updateNav(links) {
links.forEach(function(link){
$li = $('<li></li>');
$a = $('<a></a>');
$a.prop('href',link['uri']);
$a.html(link['text']);
$li.append($a);
$('#nav').append($li);
});
}
var dummyData = {
navLinks: [
{
uri: 'http://stackoverflow.com',
text: 'StackOverflow'
},
{
uri: 'http://google.com',
text: 'Google'
}
]
};
var dummyHtml = {
navHtml: '<ol><li><a href="http://meta.stackoverflow.com">Meta StackOverflow</a></li></ol>'
};
function ajaxSimData() {
var someAjaxObject = {};
someAjaxObject.success = function(data) {
updateNav(data['navLinks']);
};
someAjaxObject.success(dummyData);
}
function ajaxSimHtml() {
var someAjaxObject = {};
someAjaxObject.success = function(data) {
$('#nav').after(data['navHtml']);
};
someAjaxObject.success(dummyHtml);
}
$('.ajaxTriggerData').click(ajaxSimData);
$('.ajaxTriggerHtml').click(ajaxSimHtml);
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
<div id="message">
Simple Examples:<br>
<button class="ajaxTriggerData">Populate Nav from Data</button><br>
<button class="ajaxTriggerHtml">Load HTML string after Nav</button><br>
</div>
<div id="body">
<h3>Some navigation elements: </h3>
<ul id="nav">
<li><a href="#">Nav1</a></li>
<li><a href="#">Nav2</a></li>
<li><a href="#">Nav3</a></li>
</ul>
</div>
Côté PHP pour générer la réponse
$isAdmin = $conn->prepare("SELECT role FROM users WHERE username = :username");
$isAdmin->bindParam(":username", $username);
$isAdmin->execute();
$navLinks = [];
if($isAdmin->fetch(PDO::FETCH_ASSOC)) {
$navLinks = [
['uri' => 'admin.html', 'text' => 'Admin panel'],
];
}
return json_encode([
'navLinks' => $navLinks
]);