【问题标题】:pass the value inside php while loop to javascript using button onclick使用按钮 onclick 将 php while 循环中的值传递给 javascript
【发布时间】:2012-05-05 11:57:19
【问题描述】:

我有一个巨大的表单,在表单的一部分我想使用 js 向数据库插入一些值。我可能不清楚如何提出这个问题,但我的需求是: 假设,我在数据库 table1、table2 中有两个表。在 html 表单中:

<select name="tab1" id="tab1">  
<?php   while($row = fetch from table 1){   ?>  
        <option value"<?=$row['name']?>" name="option1"><?=$row['name']?></option>  
<?php  }  ?>  
</select>  
<input type="file" name="file">  
<input type="button" name="button" onclick="submit_form(true,'');">

现在,我想将 $row['name'] 值传递给 javascript 中的 submit_form() 函数。 javascript 代码将检查该值并将其返回到表单以提交它。我的问题是,由于 table1 中的 $row['name'] 在 while 循环内,我无法将值传递给 javascript。如果表单很小,我可以使用提交按钮并检查 $_POST('submit') 类型。我想将这种形式的 $row['name'] 插入到 table2 作为与名称关联的文件名。

【问题讨论】:

    标签: php javascript jquery onclick


    【解决方案1】:

    据我了解,您想将选定的值从表单传递给 submit_form() 函数?

    function submit_form(param1, param2){
    
        var passedValue = document.getElementById('tab1').value;
    
         // here is your old submit_form() function. passedValue contains 
         // your selected $row['name']
    
    }
    

    【讨论】:

    • 确实是...我想将 param1、param2 传递给函数。假设 param1 是用于检查表单的布尔值,param2 应该是来自所选选项的 $row['name'] 的值。我想要的只是能够将选定的选项发送到函数 submit_form() 的 param2
    • 所以在这种情况下你不需要param2 来代替submit_form()。在submit_form() 中使用passedValue 变量而不是param2。或者,如果submit_form() 不仅用于检查这一种形式,您可以更改按钮代码&lt;input type="button" name="button" onclick="submit_form(true, document.getElementById('tab1').value);"&gt; 并在submit_form() 中使用param2 中的选定值
    • 是的,submit_form() 函数是检查所有文件提交类型的函数,因此 document.getElementById('tab1').value 看起来不错。非常感谢您的意见......
    【解决方案2】:

    @Jhilke Dai,首先你的 php 代码有点小错误,'=' 符号必须在 html 中而不是在 php 中正确的代码是

    <select name="tab1" id="tab1"> 
    <?php while($row = fetch from table 1) { ?> 
    <option value="<? echo $row['name'] ?>" name="option1"><? echo $row['name'] ?></option> 
    <?php } ?> 
    </select> 
    <input type="file" name="file"> <input type="button" name="button" onclick="submit_form(true,'')">
    

    【讨论】:

    • 感谢您的纠正,是的,我错过了 html 中的 =,但是 php 中的 = 可以用作 echo 的短标记,例如 =$row['name']?> 如果这是什么你说的是
    【解决方案3】:

    您可以使用通用函数甚至 jQuery 迭代来获取表单值

    查看类似问题的答案:Get selected value/text from Select on change

    function getDomValueByID( id ) {
        return document.getElementById(id).value;
    }
    
    function submit_form( a, b ) {
        var formValue = getDomValueByID( 'tab1' );
        //OR
        var jQueryFormValue = jQuery( "#tab1" ).val();
        //Do what u want here.
    }
    

    事实上,有些人认为通过 javaScript 传递选项数据是一个非常糟糕的主意,如果它已经在页面上生成,原因如下

    1. 重复数据,浪费带宽。
    2. 可移植性较低的代码,非 OOP。
    3. 更难维护,更改您的 php 代码,需要更改您的 javaScript 代码。

    如果你真的很感兴趣(这种做法有时不受欢迎)。您可以在标题中的某处将以下内容用作 PHP 代码。将 PHP 变量传递给 JavaScript。但是有很多更好的方法可以做到这一点,从 JSONS 到 XML。

    <?php optList = ['one', 'two', 'three']; ?>
    <script type="text/javascript">
         //Window represents the global variable space, and doing this is really bad practice as listed above.
         window.optionList = [ <?php echo( implode(' , ', optList) );?> ];
    </script>
    

    【讨论】:

    • 这听起来很酷...我会尝试.....如果您愿意回复,那么我也想知道是否可以从 while 循环中获取当前值出于其他目的到外面去。
    • @JhilkeDai 其实有一些方法可以将数据从 PHP 传输到 JavaScript,并且有很多与此相关的方法,从 JSONS 到 XML。事实上,它属于一个称为 AJAX 的统称。另外,欢迎来到 stackOverflow... 随时向社区提出更多问题,以指导您 =P(是的,我更愿意回复)
    • @JhilkeDai 添加了一个简单的脚本黑客,这被许多人认为是不好的做法......但即使我有时也会使用它来测试开发过程中的随机事物=X
    • 非常感谢“pico.creator”,这看起来不错,可以尝试实现这个概念。
    • @JhilkeDai 是的,但你太习惯了。更多地依赖原始答案而不是破解。 =) 这些代码在主要的 javascript / php 网站项目中打开了蠕虫罐
    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2018-04-19
    • 2012-04-26
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    相关资源
    最近更新 更多