从Jquery调用PHP函数

时间:2013-05-12 01:49:07

标签: php jquery html ajax

这可能是很多人都会问的问题,但是,我遇到了一些不同的问题。

我正在开发一个“游戏”部分,其中每个图像都是一个标签,它将加载一个Flash游戏.swf,事情是,这需要是dinamically,我的意思是,每个file.swf有不同的宽度/高度,我在PHP中执行了一个从file.swf带宽度/高度的函数,我尝试使用javascript来执行此操作,但是当加载file.swf时我遇到了一些高度问题,例如,一个file.swf使用了720x550 php函数和JS函数给了我720x714,所以...这就是事情,我在PHP中得到了这个函数:

function flash_get(){
ini_set("memory_limit","30M");
$file ="games/miniracing3d.swf";
$info = getimagesize($file);
$width = $info[0];
$height = $info[1];
echo "<script type='text/javascript'>
    $('#game_lb_loaded').flash({
     src: 'games/miniracing3d.swf',
     width:$width,
     height:$height       
      });
</script>"; 
}

它加载了一个名为jquery.flash.js的JS插件,它是加载文件的人......但是,我需要这个与Jquery一起使用,为什么呢?好吧,我在Jquery中得到了这段代码:

$body.on('click','.game_button_link',function() {
var id_game = $(this).attr('id'),
    game = 'games/'+id_game+'.swf';


$("#game_lb_loaded").lightbox_me({
  centered: true,
  closeEsc: true,
  overlayCSS: {
      background: 'black',
      opacity: .8,
      width: 750,
      height: 600
  },
  onLoad: function() {
    $("#game_lb_loaded").flash({
     src: game       
      });

  }
});
});

代码是我在制作PHP函数之前所做的代码,好吧,就是这样,每个都有类“game_button_link”和一个id,其中每个id都是.swf的名字,例子id =“file”==“file.swf”id =“file2”==“file2.swf”......等等...真实的是,我需要混合php函数来获取宽度/高度进入onclick jquery函数我真的不知道如何实现这个,哦,我忘了,我用lightbox_me打开一个带有flash文件的灯箱...但是现在没关系,我想混合php和jquery函数T_T,我需要你的帮助:)

我最终使用此代码:

的Javascript

$body.on('click','.game_button_link',function() {
    var id_game = $(this).attr('id'),
    game = 'games/'+id_game+'.swf';

$("#game_lb_loaded").lightbox_me({
    centered: true,
    closeEsc: false,
    closeClick: false,
    closeSelector: ".close_button_lb",
    appearEffect: "fadeIn",
    overlayCSS: {
      background: 'black',
      opacity: .8,
      width: 800,
      height: 600
    },

  onLoad: function() {
$.post('game_dimension.php', 'game='+game,
function(data){
  var dimensions = data.split(',');
    $('#game_lb_loaded').flash({
        src: game,
        width: dimensions[0],
        height: dimensions[1]
    });
}


);

  },
    destroyOnClose: true
});
});

PHP

<?php
ini_set("memory_limit","30M");
$file = $_POST['game'];
$info = getimagesize($file);
$width = $info[0];
$height = $info[1];
echo $width.','.$height;
?>

感谢所有帮助过的人:)我非常感谢!

3 个答案:

答案 0 :(得分:1)

PHP是服务器端,JS是客户端。它们不混合。
你可以使用jQuery .ajax()从服务器获取数据,但是你永远不能在客户端运行PHP。

答案 1 :(得分:0)

我认为这就是你要找的东西? 在你的php文件中,而不是回显那个脚本

 echo $width.','.$height;

然后这将是你的ajax电话。

$.post('file.php',
    function(data){
        var dimensions = data.split(',');
        $('#game_lb_loaded').flash({
            src: 'games/miniracing3d.swf',
            width: dimensions[0],
            height: dimensions[1]
        });
    }
);

有帮助吗?

答案 2 :(得分:0)

如果您知道页面发送之前的值(在PHP代码中),您可以将它们写入页面中的javascript。在我的示例中,我将使用您需要将其传递给不受PHP文件控制的函数的情况:

<?php

$height = getHeight(); // just for example

?>
<script>
var height = <?php echo $height; ?>;

doSomethingWith( height );
</script>

如果是在页面发送之后,您将使用AJAX。您将创建一个不输出

以外的任何内容的PHP页面
<?php
$height = getHeight(); // Just for example
$width = getWidth(); // Just for example
$out = array("height"=>$height, "width"=>$width);
echo json_encode($out);
?>

然后在你的javascript中使用jQuery或其他JSON解析器或eval()[但只有当你控制脚本的输出时,甚至可以三思而后行。)

var myObj = $.parseJson(serverOutput);

alert(myObj.height);
alert(myObj.width);

这就是你通常的两种方式。