J'essaie de remplacer le contenu d'un div avec un fichier externe via ajax. Le code que j'utilise pour le faire est:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test</title> <script type="text/javascript"> window.onload = function(){ document.getElementById("aside").innerHTML="<img src='loadingImage.gif'>"; var x = null; if (window.XMLHttpRequest) { var x = new XMLHttpRequest(); } else if (window.ActiveXObject) { var x = new ActiveXObject('MSXML2.XMLHTTP.3.0'); } else { // fallback } x.open("GET", "other_content_1.php", true); x.send(""); x.onreadystatechange = function() { if(x.readyState == 4) { if(x.status==200) document.getElementById("aside").innerHTML = x.responseText; else document.getElementById("aside").innerHTML = "Error loading document"; } } } </script> </head> <body> <div id="aside">This is other content</div> </body> </html>
Mes questions:
Si JavaScript est activé, le code ci-dessus fonctionne bien, mais si JavaScript est désactivé, alors php devrait charger ce fichier. Comment puis-je faire cela?
Si vous allez rendre votre code compatible avec l'arrière sans JavaScript, vous n'avez vraiment aucune raison d'utiliser AJAX
. Si vous voulez juste la chaîne dans votre élément de aside
faites quelque chose comme:
//first the PHP page 'other_content_1.php' <?php $resp = 'Whatever String Response You Want'; ?> //now your other page <?php include 'other_content_1.php'; ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> <title>Test</title> </head> <body> <div id='aside'><?php echo $resp; ?></div> <script type='text/javascript' src='should_be_external.js'></script> <body> </html>
Notez que si vous voulez que cela se produise en plus de la charge, vous devez envoyer un formulaire en utilisant $_POST
ou $_GET
pour gérer la réponse PHP.
Avez-vous envisagé d'essayer l'option noscript? Voir: Que dois-je faire si Javascript est désactivé par un client?
Cependant, si vous avez beaucoup de pages, cela pourrait être beaucoup de travail si vous utilisez jquery / ajax dans vos pages – ce que je suppose que vous faites ou que vous les chargez avec jquery / ajax serait légèrement inutile.
Au moment où la page Web est affichée dans le navigateur et a constaté que JS n'est pas pris en charge, PHP / server a déjà servi la page. Vous pouvez essayer cela.
Si JS est pris en charge, votre code ci-dessus remplacera de toute façon le lien ci-dessus.