其他页面中的表单提交按钮

时间:2019-06-30 16:20:50

标签: javascript php jquery html ajax

看看我的两种不同情况。

fun.php(在所有情况下都相同)

function pre_invoice($value) //earlier it was public function ---- (typo in the question)
{
//Code to insert query in database
}

情况1:

form.php

<?php 
require_once 'fun.php';

if(isset($_POST['submit'])){
pre_invoice(999);
}
?>
<table class="table table-striped table-hover table-bordered">
    <thead class="text-center">
  <tr>
    <th>Service</th>
    <th>Quantity</th>
  </tr> 
 </thead>
<tbody>
  <form method="POST">

    <tr>
    <td></td>
    <td>8</td>
  </tr>

    <tr>
    <td></td>
    <td>12</td>
  </tr>

    <tr>
    <td></td>
    <td>4</td>
  </tr>

    <tr>
    <td></td>
    <td>6</td>
  </tr>
        <input type="submit" name="submit" />
        </form>
</tbody>
  </table>

现在,当我单击form.php中的Submit按钮时,查询将插入数据库中。


情况2:

form.php

<table class="table table-striped table-hover table-bordered">
    <thead class="text-center">
  <tr>
    <th>Service</th>
    <th>Quantity</th>
  </tr> 
</thead>
<tbody>
  <form method="POST">

    <tr>
    <td></td>
    <td>8</td>
  </tr>

    <tr>
    <td></td>
    <td>12</td>
  </tr>

    <tr>
    <td></td>
    <td>4</td>
  </tr>

    <tr>
    <td></td>
    <td>6</td>
  </tr>
        <input type="submit" name="submit" />
        </form>
</tbody>
  </table>

index.php

<?php 
 require_once 'fun.php';

 if(isset($_POST['submit'])){
  pre_invoice(999);
 }
?>
<div id="form"></div>​
<script>
   $("#form").load('form.php');
</script>

现在,当我单击index.php中的“提交”按钮时,查询插入数据库中。


我在 index.php 中包含了所有库,所有HTML标记正确,SQL查询正确。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您要做的第一件事是检查服务器日志中是否存在PHP错误。这取决于您使用的Web服务器及其配置。

您还可以在开发人员工具上检查浏览器的JavaScript控制台是否存在错误(默认情况下,您可以在基于Chromium的浏览器上使用Ctrl + Shift + J打开控制台)。

进行一些更改后,它可以在我的测试中正常工作。


fun.php

<?php
function pre_invoice($value) {
    // Your code
}

我删除了public,这不是类的方法,因此不能使用public / private关键字(这会产生PHP错误)

我添加了<?php来指示PHP代码开始,我们不必关闭它,因为该文件没有任何其他HTML代码


form.php

<form method="POST">
    <input type="submit" name="submit" />
</form>

(此文件与您提供的文件相同)


index.php

<?php 
    require_once 'fun.php';

    if(isset($_POST['submit'])){
        pre_invoice(999);
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>title</title>
    </head>
    <body>
        <div id="form"></div>
        <!-- Load jQuery -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <!-- Load form -->
        <script>
            $("#form").load('form.php');
            // We load the form only once
            // setInterval would load the form many times (in your code every 3 seconds)
        </script>
    </body>
</html>

(我不确定您是否仅提供了HTML文件的一部分)

我添加了基本的HTML结构(等)

我添加了jQuery库来支持他$(这在浏览器的控制台上产生了错误)(我从Google的CDN加载了jQuery,您可能希望在本地托管它)

我删除了setInterval,因为我认为您不需要它,也不必每3秒加载一次表单


PS:您的SQL插入代码也可能会产生错误。


完整form.php

后更新

选中Form inside a table

由于您的代码无效,因此情况1(浏览器默认情况下会加载您的HTML代码)和情况2(动态地加载HTML ID)会出现不同的结果。

因此,您应该将<form>标记移到表格外或<td>内。