当将html设置为文档时,Mootools脚本会破坏php标记

时间:2012-06-22 15:42:55

标签: php javascript joomla mootools joomla-extensions

我正在为Joomla 2.5开发模块。我有一个问题。我想将数据发送到同一页面并在其中接收答案,而无需重新加载。我找到了它的解决方案,但后来又卡住了。

问题在于,当我想使用javascript插入div标签代码<?php echo $msg; ?>时,它会变成注释<!--php echo $msg; ?-->

这是全功能

<script type="text/javascript">

window.addEvent('domready', function request() {

    $('SNbutton').addEvent('click', function(event) {
        event.stop();
        var url = window.location.href;
        var message = document.getElementById('message');
        var msg = '<?php echo $msg; ?>';
        var req = new Request.HTML({
            method: 'post',
            url: url,
            data: {'artID' : $('artid').get('value')},
            onComplete: function(response) { message.set('html', msg).setStyle('display','inline');
            }
        }).send();
    });
});
</script>

这里是结果html:

    <form name="accept_form" action="#" ><br/>
    <input type="hidden" id="artid" name="artID" value="4"/>
    <input type="button" class="SNbutton" id="SNbutton" value="I take it!" title="Accept this job and bound it to your profile.">
    </form>
    <div id="message" style="display:inline;" ><!--php echo $msg ?--></div>

P.S。这个脚本应该使用文章ID并将其发送到同一页面,根据文章,页面将生成应该在正确的位置显示的消息,但不知何故它会被破坏。

P.S.S。不要担心服务器执行php代码。据我所知,如果脚本包含在head标签中的src中,它就不会发送。

2 个答案:

答案 0 :(得分:0)

你能尝试这样做吗?

var msg = <?php echo "'".$msg."'"; ?>;

我在想,也许它在引号内部的事实搞乱了解释器。

答案 1 :(得分:0)

服务器无法解释插入已加载到浏览器中的页面的一大块PHP代码 - 它只是一个字符串。要获得所需的$msg值,您需要另一个页面,该页面可以响应您的Request.HTML来电并获取一些代码。

这里的区别在于服务器端和客户端代码。我认为要对此进行测试,使url类似于provideMessage.php,然后让该页面回复您的Request.HTML

我可能错过了Joomla模块的工作方式。