Vous pouvez également charger la page via php si ajax échoue

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.

  • L'élément #asside peut avoir un texte et un lien informant l'utilisateur de ne pas avoir supporté JS et de prendre une autre page
  • PHP peut charger le fichier et servir le contenu dans la nouvelle page.

Si JS est pris en charge, votre code ci-dessus remplacera de toute façon le lien ci-dessus.