【问题标题】:How to insert PHP values into Javascript?如何将 PHP 值插入 Javascript?
【发布时间】:2011-09-18 17:30:18
【问题描述】:

Javascript:

var counter = 1;
var limit = 5;
function addInput(divName){
     if (counter == limit)  {
          alert("You have reached the limit of adding " + counter + " inputs");
     }
     else {
          var newdiv = document.createElement('div');
          newdiv.innerHTML = " <br><select name='vehicle[]' id = 'vehicle'><option value = ''>Vehicle "+ (counter + 1) +"</option><option value = '.$brand.' '.$name.'>'.$brand.' '.$name.'</option>";
          document.getElementById(divName).appendChild(newdiv);
          counter++;
     }
}

PHP/HTML:

 <script type = "text/javascript" src="js/addinput.js"></script>
    <form name="form1" method="POST" action="services.php" onsubmit="return valid()">
    <br><br><br><center>
    <table class="form" border=1> 
    <tr>
    <td class="head" colspan="2"     >Select Vehicle:</td>
    </tr>
    <tr ></tr>
    <tr>
    <td  colspan="2"  class="info">
    <div id="dynamicInput">
    <br><select name = "vehicle[]" id = "vehicle1"> 
    <option value = "">Vehicle 1</option>';
        include_once "vehicledbconnect.php";
        $queryveh = mysql_query("SELECT * FROM vehicletbl");
        while($fetch_2 = mysql_fetch_array($queryveh)) {
        $brand = $fetch_2['vehbrand'];
        $name = $fetch_2['vehname'];
        echo '<option value = "'.$brand.' '.$name.'">'.$brand.' '.$name.'</option>';
        }
    echo '</select>';
    echo '<input type="button" value="Add another vehicle" onClick="addInput(\'dynamicInput\');"></div>';

嗨。是否可以在 javascript 中插入 PHP 值?我这里有一个程序,如果客户点击提交按钮(echo '),就会出现一个新的下拉表单。我希望下拉表单包含查询的所有值 ($queryveh = mysql_query("SELECT * FROM vehicletbl");)。在我的默认下拉表单中,显示了查询的所有值。请帮帮我。我急切地想要一个答案。 Javascript是我的弱点。非常感谢。

编辑:

newdiv.innerHTML = " <br><select name='vehicle[]' id = 'vehicle'><option value = ''>Vehicle "+ (counter + 1) +"</option>" + "<?php include 'vehicledbconnect.php'; $queryveh = mysql_query('SELECT * FROM vehicletbl'); while($fetch_2 = mysql_fetch_array($queryveh)) { $brand = $fetch_2['vehbrand']; $name = $fetch_2['vehname']; <option value = '.$brand.' '.$name.'>'.$brand.' '.$name.'</option> }?>";

这可以解决吗?我已经尝试过,但它不起作用,如果这可以成为解决方案,也许我这里的代码有问题。

【问题讨论】:

  • 我会考虑使用 jQuery 和 AJAX。您可以调用您的 php 调用并返回 JSON 值。然后解析这些值并将它们添加到您的下拉列表中。
  • @JeffV 我不知道如何使用 AJAX 和 Jquery。
  • 如果我理解正确,在提交表单时,您想添加一个新的下拉列表,其中包含来自 vehicletbl 的所有条目,并通过 Add another vehicle 保留原始下拉列表和新添加的条目按钮。是这样吗?
  • @danishgoel '如果我理解正确,在表单提交时,您想添加一个新的下拉列表,其中包含来自车辆的所有条目'并且在添加一个新的下拉列表后,来自原始下拉列表的所有值down 将可用,用户可以在单击 Add another vehicle 按钮后在新的下拉菜单中选择。
  • 为什么不直接在页面生成的时候填充下拉框?

标签: php javascript


【解决方案1】:

通过 javascript 从服务器检索值的唯一方法是使用 AJAX。

如果您不介意页面刷新,您可以不使用 AJAX 来实现,但我认为这不是您想要的。

【讨论】:

    【解决方案2】:

    我会使用 jQuery 加载函数。这是我能为你举出的最简单的例子。

    您需要下载 jQuery (http://docs.jquery.com/Downloading_jQuery) 并将其包含在您的 html 标头中:

    <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
    

    然后你可以做一个简单的函数来调用;根据您的喜好作为 onclick 或 onchange。

    function reloadDropDown()
        {
            document.getElementById('dynamicInput').innerHTML = 'Loading ...';
            var v_name = document.formname.elementname.value;
            $('#dynamicInput').load("dropdownload.php", { vehicle_name : v_name });
        }
    

    让我来看看这个。 dropdownload.php 会让你的'$queryveh' 生成下拉代码。 Javascript 基本上将 dropdownload.php 中发生的任何事情放到 id 为 'dynamicInput' 的 div 上。当 javascript 加载 dropdownload.php 时,它通过 POST 发送一个名为 vehicle_name 的变量,您可以在 dropdownload 中将其用作 $_POST['vehicle_name']。

    所以,dropdownload.php 可能看起来像这样。

    <?php
    $queryveh = mysql_query("SELECT * FROM vehicletbl WHERE vehname = '{$_POST['vehicle_name']}'");
    
    // collect the data and put it in to an Array I like to do this so I can check the array to make sure it has something in it if not return an error message but I will skip that for the purpose of this explanation.
    
    while($ucRow = mysql_fetch_array($queryveh, MYSQL_ASSOC)) array_push($resultsArray, $ucRow);
    ?>
    
    <select name = "vehicle[]" id = "vehicle1"> 
    <?php
    foreach ($resultsArray as $fetch_row){ 
        ?>
            <option value = "<?php echo $fetch_row['vehbrand'].' '.$fetch_row['vehname'].'; ?>"><?php echo $fetch_row['vehbrand'].' '.$fetch_row['vehname']; ?></option>
        <?php } ?>
    </select>
    ?>
    

    我不完全确定您所追求的最终结果,但这是一个基本的 jQuery ajax 调用。如果您能掌握这一点,那么您已经完成了真正动态的网页/应用程序的一半,并在该领域进行了一些进一步的练习。希望能给你一个前进的方向:)

    【讨论】:

      【解决方案3】:

      JavaScript 在客户端进行评估 ..so 像 Html ..so 以同样的方式使用。

      -> 是的,只要定义为首先由 php 评估(通常在 .php 文件中),您只需在 javascript 中使用 php 即可

      编辑:

      澄清一下,如果你想通过 php 从服务器获取 javascript 中的值。你需要看看 danishgoel 所说的:Ajax (Asynchronous JavaScript) ..see - 因为 Rikudo Sennin 不尊重链接,另一个http://en.wikipedia.org/wiki/XMLHttpRequest .. 或者甚至更好地查看一个为您完成大部分工作的 javascript 框架(例如 jQuery)

      【讨论】:

      • 说实话? ..不知道 - 我会调查一下
      • @Rikudo:这很可悲。 W3Schools,尽管错误信息(一切都有)仍然是许多人使用的。推广 JS 并没有起飞,因为它是为程序员设计的,而不是为初学者设计的。它的页面设计(界面)不是初学者所需要的,而这正是 W3Schools 真正迎合的。
      • ..必须同意,我知道很多人使用它..我自己经常只是快速搜索,如果结果页面包含足够的代码/信息,它是常用的。 ..我认为由每个人来整理错误信息,这些信息(不幸的是新手)在网络上几乎随处可见。
      • 恐怕我还是不同意,如果是“一些错误信息”,那么我会移开视线,但由于它具有积极的误导性,而且很少费心纠正他们的错误,我仍然不鼓励任何级别的程序员都可以使用它。有很多简单的解决方案可以帮助他们的网站,例如将其维基化,或者拥有一个严重的错误提交系统。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2016-10-21
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多