我正在为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中,它就不会发送。
答案 0 :(得分:0)
你能尝试这样做吗?
var msg = <?php echo "'".$msg."'"; ?>;
我在想,也许它在引号内部的事实搞乱了解释器。
答案 1 :(得分:0)
服务器无法解释插入已加载到浏览器中的页面的一大块PHP代码 - 它只是一个字符串。要获得所需的$msg
值,您需要另一个页面,该页面可以响应您的Request.HTML
来电并获取一些代码。
这里的区别在于服务器端和客户端代码。我认为要对此进行测试,使url
类似于provideMessage.php
,然后让该页面回复您的Request.HTML
。
我可能错过了Joomla模块的工作方式。