从 db 调用 ajax 后表单中的按钮不起作用

Posted

技术标签:

【中文标题】从 db 调用 ajax 后表单中的按钮不起作用【英文标题】:buttons in forms doesnt work after ajax call from db 【发布时间】:2018-02-28 16:10:54 【问题描述】:

我有搜索 google、here 和 w3schools,但无论如何我都找不到这个答案。甚至在“可能已经有你答案的问题”中也没有。

我正在尝试更多地了解 AJAX,我已经掌握了本指南 W3schools AJAX database

我可以开始工作的所有指南,但是当我尝试使其适应我的需要时,它就出错了。我想要的是,当我到达“getuser.php”时,我希望能够更新这个文件中的数据库。如果可能的话,不用我带着我找到的结果离开这个页面。我从该站点之前的下拉表中进行选择。应该更新数据库的 php 文件有效(在普通页面上尝试过,一切都很好)。我目前的解决方法是添加一个按钮,该按钮打开第二个窗口以更新信息。

当我到达这一点时:

<?php
$q = intval($_GET['q']);
include 'db.php';
$con = new mysqli($servername, $username, $password, $dbname);
if (!$con) 
    die('Could not connect: ' . mysqli_error($con));


mysqli_select_db($con,"webhelp");
$sql="SELECT * FROM advisors WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($result)) 
    echo "<table><tr><td>Phone</td><td>" . $row['phone'] . "</td>
          <td><form action='addphone.php' method='post'>
          <input type='hidden' name='id' value='".$q."'>        
          <td><input type='text' name='phone'></td>
          <td><input type='submit' value='Update'></td>
          </form></td></tr></table>";

    echo "<tr><td>LoB</td><td>" . $row['lob'] . "</td>
          <td><form action='addlob.php' method='post'>
          <input type='hidden' name='id' value='".$q."'>
          <td><select name='lob'>
          <option value='". $row['lob'] ."'>" . $row['lob'] . "</option>".

          $sql = "SELECT * FROM lob";
          $result = $con->query($sql);

          while($row = $result->fetch_assoc()) 
             echo "<option value='" . $row["lob"] . "'>" . $row["lob"] . "</option>"; 
              "</select></td>
              <td><input type='submit' value='Update'></td>
              </form>
              </tr>";

     echo "<tr><td>Country</td><td>" . $row['country'] . "</td>
          <td><form action='addcountry.php' method='post'>
          <input type='hidden' name='id' value='".$q."'>
          <td><select name='country'>
          <option value='". $row['country'] ."'>" . $row['country'] . "</option>".

          $sql = "SELECT * FROM country";
          $result = $con->query($sql);

          while($row = $result->fetch_assoc()) 
             echo "<option value='" . $row["country"] . "'>" . $row2["country"] . "</option>" ; 
            "</select></td>
            <td><input type='submit' value='Update'></td>
            </form>
            </tr>"; 

  
echo "</table>";

mysqli_close($con);
?>

“更新”按钮不起作用。我将文件放在哪里(相同文件夹,不同文件夹)等并不重要。但是,如果我在该按钮之外添加一个带有链接的按钮,那么该按钮将起作用。但是,一旦它在表格 PLUS 中,method="post" 的形式也会变得混乱。

我做错了什么?

或者,是否可以在这里制作一个按钮,将 $id 带到一个小的弹出窗口? (我可以在新窗口中打开它,但我无法选择窗口的大小)

【问题讨论】:

html 旁注:&lt;form&gt; 不能成为 &lt;table&gt; 的子级。 所以只是为了确保我正确理解你。
必须在 之外? :) 是的,(基本)语法是:&lt;form&gt;&lt;table&gt;&lt;input&gt;&lt;/table&gt;&lt;/form&gt;。这个答案将告诉你它是如何完成的***.com/a/29364569/1415724或者您可以将表单放在表格内的&lt;td&gt; 中。这也适用于其他元素,而不仅仅是表单。唯一可以在&lt;table&gt; 标签下直接使用的是&lt;tr&gt;&lt;tbody&gt;&lt;thead&gt;
【参考方案1】:

您想为所有 3 个表单执行此操作。我给你举第一个例子。

表格

   echo "<form class='addPhoneForm' action='addphone.php' method='post'>
         <table>
         <tr>
          <td>Phone</td><td>" . $row['phone'] . "</td>
          <td><input class='phoneID' type='hidden' name='id' value='".$q."'></td>        
          <td><input class='phoneNumber' type='text' name='phone'></td>
          <td><input class='submitme' type='submit' value='Update'></td>
          </td>
          </tr>
         </table>
         </form>";

AJAX

$(document).ready(function()
$(".submitme").click(function()

//collect variables from input
var phoneID = $(".phoneID").val();
var phoneNumber = $(".phoneNumber").val();

// store in a string
var dataAddPhone = 'phoneID='+ phoneID + '&phoneNumber='+ phoneNumber;

// send to database
$.ajax(
type: "POST",
url: "addphone.php",
data: dataAddPhone,
cache: true,

//if success 
success: function(response)

//display message
   $(".displayMessage").html(response);

   //and reset form
       $(".addPhoneForm").trigger("reset");

);

return false;
);

);

【讨论】:

非常感谢!这说得通。明天我再回家的时候试试这个。 :)

以上是关于从 db 调用 ajax 后表单中的按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ajax调用后div中的日期选择器不起作用

AJAX 调用后 HTML 选择不起作用

ajax 后引导程序中的工具提示不起作用

在发出初始ajax请求后,Ajax请求无法发送 - 试图找出导致冲突的原因

Ajax加载后按钮上的JQuery HTML onclick属性不起作用

按下按钮后如何使“提交”表单从 Ajax 工作