PHP变量包含HTML和JavaScript。通过JavaScript将其注入HTML不起作用

PHP变量包含HTML和JavaScript。通过JavaScript将其注入HTML不起作用,javascript,php,html,wordpress,Javascript,Php,Html,Wordpress,我正在尝试向Wordpress自定义帖子类型添加一些自定义PHP代码 在一个单独的php文件中,我有以下内容: <?php $BuildForm = '<script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script> <form id="mktoForm_1111"></form> <script>MktoF

我正在尝试向Wordpress自定义帖子类型添加一些自定义PHP代码

在一个单独的php文件中,我有以下内容:

<?php


$BuildForm = '<script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script>
            <form id="mktoForm_1111"></form>
            <script>MktoForms2.loadForm("//app.marketo.com", "345-XCL-354", 1111,
                function(form) {
                    for ( var ss = document.styleSheets, i = 0, imax = ss.length; i < imax; i++ ) {
                        if ( ( ss[i].href && ss[i].href.indexOf("marketo.com") !== -1 )
                        || ( (ss[i].ownerNode || ss[i].owningElement).parentNode == form.getFormElem()[0] ) ) {
                        }
                    }
                    form.onSuccess(function(values, followUpUrl){
                    location.href = "#";
                    return false;
                    });
                    form.vals({ "comments":"test"});
                });
            </script>';


?>
<div id="TheForm" style="max-width:40%; margin: 0 auto;"></div>

<script type="text/javascript">
 document.getElementById("TheForm").innerHTML = '<?php echo $BuildForm; ?>' ;
</script>

然后在Wordpress中的自定义帖子类型中,我有以下内容:

<?php


$BuildForm = '<script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script>
            <form id="mktoForm_1111"></form>
            <script>MktoForms2.loadForm("//app.marketo.com", "345-XCL-354", 1111,
                function(form) {
                    for ( var ss = document.styleSheets, i = 0, imax = ss.length; i < imax; i++ ) {
                        if ( ( ss[i].href && ss[i].href.indexOf("marketo.com") !== -1 )
                        || ( (ss[i].ownerNode || ss[i].owningElement).parentNode == form.getFormElem()[0] ) ) {
                        }
                    }
                    form.onSuccess(function(values, followUpUrl){
                    location.href = "#";
                    return false;
                    });
                    form.vals({ "comments":"test"});
                });
            </script>';


?>
<div id="TheForm" style="max-width:40%; margin: 0 auto;"></div>

<script type="text/javascript">
 document.getElementById("TheForm").innerHTML = '<?php echo $BuildForm; ?>' ;
</script>

document.getElementById(“TheForm”).innerHTML='';
我遇到的问题是#表单的内容显示为

我不太清楚问题出在哪里。我是否需要以不同的方式格式化PHP变量中的JavaScript

例如,我尝试了转义
/
,但也没有帮助


(在你提问之前,是的,我在我的Wordpress自定义帖子类型中包含了外部php文件)。

当然不起作用!php在服务器上执行(不输出任何内容),然后由客户端呈现,然后运行javascript。客户端javascript不知道如何处理php

您的PHP应该返回完整格式的HTML,如下所示:

<?

$BuildForm = '....';

?>

<div id="TheForm" style="max-width:40%; margin: 0 auto;">
  <?= $BuildForm ?>
</div>


或者,更改客户端javascript以通过ajax获取
$BuildForm
HTML。但是让PHP生成所需的HTML可能更容易。

由于
$BuildForm
变量包含
,将出现
语法错误:意外的EOF
。下面是分配代码的示例:

<script type="text/javascript">
 <script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script> <!-- </script> tag will be closed here -->
</script>

是的,卡伦巴。不要这样注入javascript。不好,不好的主意。我的问题是我需要允许Wordpress编辑器能够移动这个div。这个想法是他们在想要的地方添加div容器,然后javascript被注入其中。如果我将div添加到php变量中,那么我的编辑器就不能移动它在Wordpress中使用VisualComposer。通过admin_enqueue_脚本添加JavaScript,而不是通过html注入