在php的textarea中呈现javascript

在php的textarea中呈现javascript,php,javascript,Php,Javascript,我有一个表单、文本区域和一个按钮。 单击按钮,我调用一个php函数。 从那个里,我调用服务,根据文本框中插入的值获取数据。 功能代码为 function fire_btn(btnvalue) { if(btnvalue=="Create Widget") { var dataString = $("form").serialize(); receiveReq.open("GET", '<?php echo $this->config->

我有一个表单、文本区域和一个按钮。 单击按钮,我调用一个php函数。 从那个里,我调用服务,根据文本框中插入的值获取数据。 功能代码为

function fire_btn(btnvalue) {
    if(btnvalue=="Create Widget") {
        var dataString =  $("form").serialize();
        receiveReq.open("GET", '<?php echo $this->config->item('url');?>getData/retriveData?&'+dataString);
        receiveReq.onreadystatechange = getdata; 
        receiveReq.send(null);
        document.getElementById('btnsave').value="Save Changes";
    }
}

function getdata() {
    if (receiveReq.readyState == 4 ) {
        document.getElementById('code').innerHTML = receiveReq.responseText;
        document.getElementById('codebox').focus();
    }
}
功能火灾(btn值){
if(btnvalue==“创建小部件”){
var dataString=$(“form”).serialize();
receiveReq.open(“获取”、“获取数据/检索数据”和“+dataString”);
receiveReq.onreadystatechange=getdata;
接收方发送(空);
document.getElementById('btnsave').value=“保存更改”;
}
}
函数getdata(){
如果(receiveReq.readyState==4){
document.getElementById('code').innerHTML=receiveReq.responseText;
document.getElementById('codebox').focus();
}
}
这里Id“code”是我的div Id&Id“codebox”是我文本区域的d

现在,在php的retriveData数据函数中,我正在这样做

$x = "<input type='hidden' value='".$this->db->insert_id()."' name='hdn' id='hdn' />";
        $x .= "<textarea id='codebox' readonly style='cursor:auto;min-width: 643px; min-height: 112px;max-width: 643px;max-height: 112px;margin-left:5px;'><!--Code Starts-->&lt;script type='text/javascript'&gt;";
        $x .= "wID= '".$this->db->insert_id()."';";
        $x .= "document.write('&lt;div id=myads".$this->db->insert_id()."&gt;&lt;/div&gt;');";

        $x .="document.write('&lt;scr'+'ipt type=";
        $x .='"text/JavaScript" src="'.$this->config->item('url').'allJs/myJs.js">';
        $x .=  "&lt;/scr'+'ipt&gt;');&lt;/script&gt;<!--Code Ends--></textarea>";
        echo $x;
$x=”“;
$x.=“脚本类型='text/javascript'”;
$x.=“wID=”。$this->db->insert_id()。“;”;
$x.=“document.write('div id=myads”。$this->db->insert_id()。”/div');”;
$x.=“document.write('scr'+'ipt type=“;
$x.=“text/JavaScript”src=“”。$this->config->item('url')。'allJs/myJs.js“>”;
$x.=“/scr'+'ipt');/script”;
echo$x;
myJs.js是

document.write('<link rel="stylesheet" type="text/css" href="style.css">');
document.write('<script type="text/javascript" src="http://myDomain.com/Create.js"></script>');

var myElement = document.getElementById('myads'+wID);
var JavaScriptCode = document.createElement("script");
JavaScriptCode.setAttribute('type', 'text/javascript');
JavaScriptCode.setAttribute("src", 'http://myDomain.com/content/'+wID);
document.getElementById('myads'+wID).appendChild(JavaScriptCode);
document.write(“”);
文件。写(“”);
var myElement=document.getElementById('myads'+wID);
var JavaScriptCode=document.createElement(“脚本”);
setAttribute('type','text/javascript');
setAttribute(“src”,'http://myDomain.com/content/“+wID);
document.getElementById('myads'+wID).appendChild(JavaScriptCode);
现在的问题是,在文本区域中,应该显示的文本是

<!--Code Starts--><div id='myads28'></div><script async type='text/JavaScript' charset='utf-8' src='http://myDomain.com/content/28'></script><!--Code Ends-->

当我在本地机器上测试它时,这是正确显示的

但是,当我在托管服务器上看到它时,它会显示类似的内容

<!--Code Starts--><script type='text/javascript'> wID= '28';document.write('<div id=myads28></div>');document.write('<scr'+'ipt type="text/JavaScript" src="http://myDomain.com/Create.js"></scr'+'ipt>');</script><!--Code Ends-->
wID='28';文件。写(“”);文件。写(“”);
我无法理解正在发生的事情


有人能帮我解决这个问题吗。

您将javascript直接放在文本区域,因此它将准确地显示脚本是什么,而不是执行脚本,有点像站点的记事本部分。如果希望脚本写入页面,请将其置于文本区域之外。您还可以使用PHP将div放在站点上,而不是让javascript执行几个document.write(),从而释放客户端上的资源。

只需查看变量
$x
,以下是我的建议

    $id = $this->db->insert_id();
    $rootURL = $this->config->item('url');
    $x = <<<EOD
<style>
    #codeBox {
        cursor: auto;
        min-width: 643px;
        min-height: 112px;
        max-width: 643px;
        max-height: 112px;
        margin-left: 5px;
    }
</style>
<input type="hidden" value="$id" name="hdn" id="hdn" />
<textarea id="codebox" readonly>
    <div id="myads{$id}"></div>
</textarea>
<script src="{$rootURL}allJs/myJs.js"</script>
EOD;
    echo $x;
myJs.js
中,您将元素作为子元素添加到
, 所以它看起来像
,而不是

相反,我将其更改为将元素添加到

我还建议,如果您正在硬编码
的内容,您可以使用以下更改修改
$x
,因为插入
不需要Javascript


如果您还有问题,请告诉我。

我正在使用本教程,我只想在textarea
eval(document.getElementById('codebox').value)中显示生成的代码完成和完成;)
document.getElementById('codeBox').appendChild(JavaScriptCode);
<textarea id="codebox" readonly>
    <div id="myads{$id}"></div>
    <script async type='text/JavaScript' charset='utf-8' src='http://myDomain.com/content/{$id}'></script>
</textarea>