1

我正在尝试通过 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 应该加载该文件。我是怎么做到的?

4

3 回答 3

1

如果你打算让你的代码在没有 JavaScript 的情况下向后兼容,那么你真的没有理由使用它AJAX。如果您只想将字符串放入asideElement 中,请执行以下操作:

//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>

请注意,如果您希望除此之外发生这种情况,您将使用或处理 PHP 响应onload提交表单。$_POST$_GET

于 2013-08-02T00:46:38.400 回答
0

您是否考虑过尝试 noscript 选项?请参阅:如果客户端禁用了 Javascript,我该怎么办?

但是,如果您有很多页面,如果您在整个页面中使用 jquery/ajax,这可能会做很多工作——我猜你会这样做,或者使用 jquery/ajax 加载它们会有点毫无意义。

于 2013-08-02T00:30:47.237 回答
0

当网页在浏览器中显示并发现不支持 JS 时,PHP/server 已经为该页面提供了服务。你可以试试这个。

  • #aside 元素可以有文本和链接,通知用户不支持 JS 并获取另一个页面
  • PHP 可以加载文件并在新页面中提供内容。

如果支持 JS,你上面的代码无论如何都会替换上面的链接。

于 2013-08-02T00:35:09.127 回答