2013-05-12 141 views
-1

这可能是很多人问的东西,但是,我有一些不同的麻烦。我开发一个“游戏”部分,其中每个图像是一个标签,它将加载一个flash游戏.swf,事情是,这需要dinamically,我的意思是,每个file.swf有不同的宽度/高度,我做了一个PHP函数,从file.swf带宽/高度,我试图使用JavaScript来做到这一点,但当我加载file.swf时,我得到了一些高度麻烦,例如,一个file.swf有720x550使用PHP函数和JS功能给我720x714,所以......这是东西,我得到了在PHP这样的功能:从Jquery调用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>"; 
} 

它加载一个JS插件叫做jquery.flash.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文件...但它does not现在问题,我想混合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

为什么撤消投票?对于那些试图做类似事情的人来说这不是很有帮助吗? – Vala 2013-05-12 02:24:56

回答

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] 
     }); 
    } 
); 

有帮助吗?

+0

虽然我不知道这个设置是如何动态的,因为Vala将不得不为每个flash对象创建一个新的php文件......我想我可能在他的文章中遗漏了一些东西。 – WackyWalrus 2013-05-12 02:10:20

+0

是的,它的工作原理!有没有办法在PHP中调用“getElementByClassName”?你可以看到我需要制作src:'games /'+ idgame +'。swf';进入PHP:S,感谢您的快速回答! – Vala 2013-05-12 02:19:35

+1

无法使用PHP查询页面上的元素。 PHP全部运行在服务器上,PHP中没有任何内容运行在用户端。你需要做的是将Javascript变量“id_game”传递给Ajax调用,然后修改你的PHP代码以使用$ _POST ['id_game']值。 – WackyWalrus 2013-05-12 02:25:19

1

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

+0

嗯,我知道,我只是需要知道如何从PHP中获取这些值,如宽度/高度到我的jQuery中。我想可能有办法,但我不会从哪里开始。 – Vala 2013-05-12 01:55:14

+0

使用json ??????? – itachi 2013-05-12 02:00:55

+0

你能举个例子吗?我对网页开发太新了:S – Vala 2013-05-12 02:02:54

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); 

所以这是你通常采用的两种方法。

+0

感谢您的答案,现在它的工作:)。 – Vala 2013-05-12 03:23:22