2012-07-31 62 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'])。