将PHP输出传递给jQuery

时间:2011-02-25 15:23:21

标签: php javascript jquery

我有这段代码

/* Popup for hot news */
    $(document).ready(function() {
        var $dialog = $('<div></div>')
            .html('text to be shown')
            .dialog({
                autoOpen: false,
                title: 'Table'
            });

此代码位于header.php包含的JavaScript文件中。 如何将PHP输出传递给这个函数?

<?php echo($mydata)?>上面输入.html('')并没有解决任何问题。

出现错误的原因是什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

首先你的代码遇到了一些问题,php中的$是变量的前缀,而jQuery中的$是一个选择符号。您可以在浏览器上查看html源代码(输出)以进行调试。

我可以想到三种方法:

(1)您提到的方式应该有效,请参阅下面的代码

<?php $foo='hi'?>
<script>
alert("<?php echo $foo?>");
</script>

(2)另一种方法是清楚地分离服务器端和客户端幻灯片代码以便更好地进行维护

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<?php echo"<div id='foo' style='visibility:hidden;'>HI</div>"?>
<script>
alert($('#foo').text());
</script>

(3)最后一种方法是从URL http://example.com/example.php#hi

传递变量
<script>
var foo= location.href.split('#')[1];
alert(foo);
</script>

答案 1 :(得分:1)

在JS文件中添加<?php //code?>不会做任何事情,因为Apache不会执行JS文件。您可以在页面加载后使用Ajax请求数据(如果数据不需要在开始时),或者您可以将这些PHP代码块添加到HTML代码中。

使用Ajax(在您的JS文件中)

$(document).ready(function(){
   var u = 'data.php';
   var d = {};//data
   $.get(u, d, function(data){
     //got by data. lets invoke some methods here
   });
});

将其放入HTML(包含在HTML文件中)

var __DATA = '<?php //output some data I prepared earlier ?>'; 
//I'm using __ and capitol case to denote a global variable. Just personal preference
<script src='myjsfile.js' type='text/javascript'></script>
//the variable __DATA is available to your JS file and you can use it