PHP没有在iFrame中运行

时间:2014-01-06 20:25:52

标签: php html forms iframe textarea

您好我正在尝试创建一个个人代码游乐场...我正在使用Code Mirror变成一个看起来像IDE(我还计划稍后添加IDE的功能但是......)。我目前的代码基本上是..

HTML(index.html)

<html>
<head>
    <link href="main.css" rel="stylesheet" type="text/css" />
    <script src="http://codemirror.net/lib/codemirror.js"></script>
    <link href="http://codemirror.net/lib/codemirror.css" rel="stylesheet" />
    <script src="http://codemirror.net/mode/htmlmixed/htmlmixed.js"></script>
    <script src="http://codemirror.net/mode/css/css.js"></script>
    <script src="http://codemirror.net/mode/javascript/javascript.js"></script>
</head>
<body>
<div class="codewindow">
        <form id="codePush" action="codePush.php" method="POST" target="codeResults">
            <textarea id="htmlWindow"></textarea>
            <textarea id="cssWindow"></textarea>
            <textarea id="jsWindow"></textarea>
            <input type="submit" />
        </form>
        <script class="code">
            var htmlCodeMirror = CodeMirror(function(elt) {
                htmlWindow.parentNode.replaceChild(elt, htmlWindow);
                }, {value: "<!-- HTML goes here -->",
                   lineNumbers: true,
                   mode: "text"});
        </script>
        <script class="code">
            var cssCodeMirror = CodeMirror(function(elt) {
                cssWindow.parentNode.replaceChild(elt, cssWindow);
                }, {value: "/* CSS goes here. */",
                   lineNumbers: true,
                   mode: "css"});
        </script>
        <script class="code">
            var jsCodeMirror = CodeMirror(function(elt) {
                jsWindow.parentNode.replaceChild(elt, jsWindow);
                }, {value: "// JavaScript goes here.",
                   lineNumbers: true,
                   mode: "javascript"});
        </script>
    </div>
    <div class="output">
        <iframe id="codeResults" name="codeResults" target="codePush.php" width="100%" height="100%" frameBorder="0.5" scrolling="yes"></iframe>
    </div>
</body>

PHP(codePush.php)

<!DOCTYPE html>
<html>
<head>
    <style>
        <?php
        echo $_GET['cssWindow'];
        ?>
    </style>
    <script type="text/javascript">
        <?php
        echo $_GET['jsWindow'];
        ?>
    </script>
</head>
<body>
    <?php
    echo $_GET['htmlWindow'];
    ?>
</body>
</html>

我已确保指向iFrame的链接有效,因为在正文部分中向PHP文件添加文本时,会在按下提交时显示该文本。

我希望我已经说清楚了,并希望得到任何帮助...... 仅供参考我在PHP上有点像NOOB

1 个答案:

答案 0 :(得分:0)

我无法确定您使用所提供的所有代码尝试实现的目标,但这是一个简化版本,它将解决代码未在codePush.php中处理的主要问题:

<div class="codewindow">
<form id="codePush" action="codePush.php" method="POST" target="codeResults">
    HTML:<textarea id="htmlWindow" name="htmlWindow"></textarea>
    CSS:<textarea id="cssWindow" name="cssWindow"></textarea>
    JS:<textarea id="jsWindow" name="jsWindow"></textarea>
    <input type="submit" />
</form>
</div>
<div class="output">
    <iframe id="codeResults" name="codeResults" target="codePush.php" width="100%" height="100%" frameBorder="0.5" scrolling="yes"></iframe>
</div>

CodePush.php

<!DOCTYPE html>
<html>
    <head>
        <style>
            <?php
            echo $_POST['cssWindow'];
            ?>
        </style>
        <script type="text/javascript">
        <?php
            echo $_POST['jsWindow'];
        ?>
        </script>
    </head>
    <body>
        <?php
        echo $_POST['htmlWindow'];
        ?>
    </body>
</html>

请注意CodePush.php使用'POST'而非'GET',以便它与您的表单一致。您还缺少textareas上的'name'属性,这是post(而不是id)中使用的属性。 如果字段不完整,您可能需要考虑添加一些检查以避免错误等。