【问题标题】:PHP not running in iFramePHP 未在 iFrame 中运行
【发布时间】:2014-01-06 20:25:51
【问题描述】:

您好,我正在尝试制作个人代码游乐场...我正在使用 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 方面有点小白

【问题讨论】:

  • HOW 这不起作用吗?请注意,html 中的 id 不会创建匹配的 javascsript 对象。您尚未在 JS 代码中的任何位置定义 htmlWindowcssWindow 等,因此几乎可以肯定,如果您检查 javascript 控制台,您将被未定义对象错误淹没。
  • iframe 几乎总是一个坏主意。
  • PHP 在服务器上运行,它不关心输出将显示在哪里。
  • 你没有在 iFrame 请求中设置任何参数,所以 PHP 不知道 $_GET['htmlWindow'] 等实际上是什么
  • 您在iframe 中也没有src 属性。你有target,但这不是设置 iframe URL 的方法。

标签: php html forms iframe textarea


【解决方案1】:

我不确定你想用你提供的所有代码实现什么,但这里有一个简化版本,它将解决 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 上的“名称”属性,这是帖子中使用的(不是 id)。 如果字段不完整,您可能需要考虑添加一些检查以避免错误等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2020-10-17
    • 2012-10-25
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多