2013-05-12 126 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