PHP和jQuery函数只能工作一次吗?

时间:2011-07-21 16:12:52

标签: php jquery

我有以下功能。当我第一次单击时,它会返回一个随机数,但所有后续点击始终返回相同的数字。怎么不刷新?

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {

        $('#btn-get-random-image').click(function () {

            $('#my-img').attr('src', '<?php echo $pics[array_rand($pics, 1)]; ?>');

        });
}); 
</script>

4 个答案:

答案 0 :(得分:5)

这是因为你使用PHP来生成随机数,并且不可能在调用JS函数时刷新它 - 它在那时嵌入在HTML中。

答案 1 :(得分:1)

也可以使用live代替click

  $(document).ready(function(){
    $('#btn-get-random-image').live("click", function () {
    // your works here
    }
 });

还可以查看jquery live

答案 2 :(得分:0)

您的PHP正在创建JS代码,该代码在呈现页面时会被发送到浏览器。每次调用JS函数都会运行渲染页面时存在的函数。

答案 3 :(得分:0)

正如其他人所说,你使用的是PHP,它在服务器上执行一次并作为原始输出发送,因此图像不会改变。试试这个!

编辑:修改后的代码,使其少吸收。

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var myPics = <?php echo json_encode($pics); ?>;
$(document).ready(function() {
    $('#btn-get-random-image').click(function () {
        var index;
        do {
            index = Math.floor(Math.random() * myPics.length);
        } while ( typeof myPics[index] == 'undefined' );
        $('#my-img')
            .attr('src', myPics[index]);
    });
}); 
</script>

这使用PHP的JSON编码器将您的数组转储到javascript,然后您的函数随机选择要显示的数组中的图像。 do/while循环可能没有必要,我的测试显示在数千次迭代中具有相当好的近均匀分布,但仍然存在。