或者,如果ajax失败,则通过php加载页面
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
元素中,那么做一些类似的事情:
//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选项?请参阅:如果客户端禁用Javascript,我该怎么办?
然而,如果你有很多页面,如果你在整个页面中使用jquery/ajax,这可能是一项艰巨的工作——我猜你会这样做,或者用jquery/aajax加载它们会有点毫无意义。
当网页在浏览器中显示并发现不支持JS时,PHP/server已经为该页面提供了服务。你可以试试这个。
- #side元素可以具有文本&通知用户没有JS支持的链接,并进入另一页
- PHP可以加载文件并在新页面中提供内容
如果支持JS,您的上述代码无论如何都将取代上述链接。
相关文章:
- Javascript/Jquery/PHP加载页面-如何
- 使用jQuery和PHP加载区域设置变量
- 使用JS和PHP加载效果
- jQuery倒计时-应用于通过AJAX/PHP加载的新元素
- 通过php加载javascript,使其不会;t在源中直接可见
- 使用PHP加载基于用户名的不同视图
- Highcharts - 无法使用 JSON / 无 PHP 加载外部数据
- 如何通过PHP加载外部文件
- 使用 PHP 加载 CSS(可能还有 JS)
- 使用 jquery 和 php 加载更多内容
- 在javascript之后从php加载的动态图像需要运行
- 如何使用带有参数的 ajax-php 加载数据
- 如何使用php加载javascript内容
- JQuery UI在通过php加载时未检测到CSS样式
- 将事件处理程序附加到通过PHP加载的下拉选项html
- 或者,如果ajax失败,则通过php加载页面
- AJAX/Jquery/PHP-加载依赖于锚点/哈希标记的页面
- JavaScript未在PHP加载的HTML上运行
- 提交表单时从php加载动态内容
- 显示'不再发布帖子'当使用ajax php加载所有帖子时