2012-07-31 29 views
0

我有一些麻煩,從我的JavaScript函數傳遞給我的PHP頁面。 open_boosters從我想傳遞給site3.php的數組中返回一個隨機變量。我知道PHP代碼get首先被執行,但我怎麼能傳遞這些變量而不需要用戶點擊任何東西?從函數的變量不被傳遞到php

> main.html中

<p id="generatenumbers"></p> 
<script> 
var open_boosters = function() 
    { 
     var i, j; 
     var array=[]; 

     for(i=0; i < 13; i++) 
     { 
      (array[i] = Math.floor(Math.random()*14)+16); 

       for(j=0;j<i;j++) 
       { 
        while(array[i]==array[j]) 
        { 
         (array[i]= Math.floor(Math.random()*14)+16); 
        } 
       } 
       return array[i]; 
     } 
    } 

window.addEventListener('DOMContentLoaded', function() 
    { 
    var randnumb = open_boosters(); 

    document.getElementById("generatenumbers").innerHTML=open_boosters(); 
    document.getElementById("randImg").src = "site3.php?rndNum"+randnumb; 
    }, false); 
</script> 

site3.php

<?php 
$mysqli=mysqli_connect('localhost','root','','draftdb'); 
if (!$mysqli) 
die("Can't connect to MySQL: ".mysqli_connect_error()); 

$stmt = $mysqli->prepare("SELECT display.PICTURE_ID 
FROM cards 
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID 
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE ='rare'"); 

$displayid = isset($_GET['randnumb'])? $_GET['randnumb'] : false; 

//echo "Number: ".$displayid." "; 
$stmt->bind_param("i", $displayid); 
$stmt->execute(); 
$stmt->bind_result($image); 
$stmt->fetch(); 
//header("Content-Type: image/jpeg"); 
echo $image; 
?> 
+0

您需要將open_boosters聲明爲函數,而不是變量。 'function open_boosters(){...}' – Matt 2012-07-31 20:24:51

+1

'rndNum'後缺少'='? '「site3.php?rndNum」+ randnumb;' – Wiseguy 2012-07-31 20:25:53

+1

在你的JS:'「site3.php?rndNum =」+ randnumb'。在你的PHP中:'isset($ _ GET ['rndNum']?$ _ GET ['rndNum']:false)'。雖然我不完全確定是否即時更改「src」圖像將實現您的預​​期結果。 – Palladium 2012-07-31 20:27:43

回答

2

我能得到這個工作主要是通過在評論中建議的修改如下:

  • open_boosters()功能
  • 添加缺少的=到URL
  • 使用相同randnumb變量同時爲getElementById集功能
<p id="generatenumbers"></p> 
<img src="" id="randImg" /> 

<script> 
function open_boosters() 
{ 
    var i, j; 
    var array=[]; 

    for(i=0; i < 13; i++) 
    { 
     (array[i] = Math.floor(Math.random()*14)+16); 
     for(j=0;j<i;j++) 
     { 
      while(array[i]==array[j]) 
      { 
       (array[i]= Math.floor(Math.random()*14)+16); 
      } 
     } 
     return array[i]; 
    } 
} 

window.addEventListener('DOMContentLoaded', function() 
{ 
    var randnumb = open_boosters(); 

    document.getElementById("generatenumbers").innerHTML=randnumb; 
    document.getElementById("randImg").src = "site3.php?rndNum="+randnumb; 
}, false); 

</script> 

的隨機數,然後提供給site3.php腳本作爲$_GET['rndNum'](不是$_GET['randnumb'])。