如何将PHP(index.php文件)变量值传递给外部JAVASCRIPT .js文件?

时间:2014-04-02 14:02:52

标签: javascript php jquery

实际上这段代码是在index.php文件中编写的,但现在我想把这个javascript数组值传递给外部的js文件。

<?PHP 
  $qry2 = mysql_query("SELECT table_no FROM table_info");
  while($res2 = mysql_fetch_array($qry2))
  {
    static $i = 0;
    $i++;
    $reg_table[$i] = $res2['table_no']; 
  }
?>


<script>
  var bookedSeats = new Array();
  <?php foreach($reg_table as $key => $val)
  { ?>
    bookedSeats.push('<?php echo $val; ?>');
  <?php }?>
</script>

我希望bookedSeats变量位于外部table.js文件中。

3 个答案:

答案 0 :(得分:0)

你有jQuery 标签,所以我打算给你这个......使用Ajax:

<强> test.php的

<?php

// Handle Ajax Request
if (isset($_GET['loadData']))
{
    // Query your db here, im building dummy data
    $results = array();
    for ($i = 0; $i < 10; $i++) {
        $results[] = 'Data '. $i;
    }

    // Return Data
    exit(json_encode($results));
}

?>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">

// Load Data Via Ajax
$.getJSON("test.php?loadData", function(bookedSeats)
{
    console.log(bookedSeats);
});

</script>

当页面加载时,我们得到如下结果:

enter image description here

答案 1 :(得分:0)

<script>
  var bookedSeats = new Array();
  <?php foreach($reg_table as $key => $val)
  { ?>
    bookedSeats.push('<?php echo $val; ?>');
  <?php }?>
</script>

这可以大大简化,并且不受XSS的影响:

<script>
  var bookedSeats = <?php echo json_encode(array_values($reg_table)); ?>;
</script>

您现在可以在外部.js文件中引用bookedSeats,但在此内联脚本放置后 换句话说,放:

<script src="external.js"></script>
{/ 1>}之后的

,但是之前将放在之前只是推迟执行 - 只需将其放在后面就更安全了;)

答案 2 :(得分:0)

即使Latheesan Kanes的一个是正确的,我也会为您提供替代解决方案。

如果您可以访问table.js文件中Javascript对象中的构造函数,那么我只是作为一个简单的例子给出。

    <script>
  var bookedSeats = new Array();
person=new Object();
  <?php foreach($reg_table as $key => $val)
  { 
// here a javascript object
?>

person.firstname="John"; // of course replace firstname and John by your informations
  <?php }?>


    // then call table.js constructor
var objectInTableDotJS = new YourConstructor(person); // now in table.js you need to make modification :)