[英]Alternatively load page via php if ajax fails
我试图通过ajax用外部文件替换div的内容。 我正在这样做的代码是:
<!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>
我的问题:
如果启用了JavaScript,则上面的代码可以正常工作,但是如果禁用了JavaScript,则php应该加载该文件。 我该怎么办?
如果您要使代码在不使用JavaScript的情况下向后兼容,那么您根本没有理由使用AJAX
。 如果只想将字符串放入aside
Element中,请执行以下操作:
//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>
请注意,如果您希望除onload
之外发生这种情况,则可以使用$_POST
或$_GET
提交表单来处理PHP响应。
您是否考虑过尝试noscript选项? 请参阅: 如果客户端禁用了Java脚本,该怎么办?
但是,如果您有很多页面,那么如果您在整个页面中都使用jquery / ajax,则可能会需要大量工作-我猜您这样做或将它们与jquery / ajax一起加载将毫无意义。
当网页显示在浏览器中并且发现不支持JS时,PHP /服务器已经为该页面提供了服务。 你可以试试看
如果支持JS,则您的上述代码仍将替换上述链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.