这可能是很多人都会问的问题,但是,我遇到了一些不同的问题。
我正在开发一个“游戏”部分,其中每个图像都是一个标签,它将加载一个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;
?>
感谢所有帮助过的人:)我非常感谢!
答案 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);
这就是你通常的两种方式。