toggle()div元素提交表单数据

这是我的问题:提交表单后,我想从数据库(MySQL)中查看div元素中所选对象的一些数据。 页面启动时,此元素设置为“display:none”。

如果用户单击按钮,则

应该变为可见,并且应该看到数据。 再次单击,

将再次变为不可见。 为实现这一点,我使用了jQuery函数toggle()

如果我使用带有“type=submit”的输入元素,则提交表单,并且由于

的php语句而得到数据。 但不幸的是,

会立即消失。 我想提交默认情况下会再次启动页面,因此

再次设置为“display:none”

如果我使用按钮元素而不是我可以切换

但是表单未提交,则$ _POST未填充,因此我没有从数据库中获取该对象的任何数据。 我们的想法是使用对象的名称来设置$ id变量的值以启动SQL语句。

我试图保持源代码非常短,因此我没有在这里编写数据库相关的语句。 这不是问题 – 当我使用普通提交而没有为

切换function时,我能够获取对象的数据。

正如您在源代码中看到的那样,我尝试了三种输入类型。 但它没有一个像我希望它工作。

我知道使用另一个额外的页面显示数据一切都会很容易。 但我想用

来实现它。

我该如何解决这种情况? 这是我的源代码:

     #wbtogdiv { width:30%; height:100px; border:6px solid green; display:none; }   $(document).ready(function(){$("#btn").click(function(){$("#wbtogdiv").fadeToggle(20);return true;});});   <!-- I tried also with this action="" but of course then the page is fired again and the 
is not visible due to the CSS-->
<!-- -->
KASTEN:

默认情况下, button元素提交表单,但是,您通过设置type="button"覆盖该行为。 (有点违反直觉,我同意。)

由于您已经在使用jQuery,因此您可以利用其内置的AJAX支持并覆盖默认的表单提交行为。 这是一种优雅降级的方法:如果用户在不执行JavaScript的环境中运行,他们将使用默认浏览器行为提交表单并仍然看到结果。 (在这种情况下,你会调整你的CSS以使你的div在默认情况下可见,并使用JS在页面加载期间隐藏它。) DEMO jsFiddle

 var $form = $('form'); var $resultDiv = $('#wbtogdiv'); $resultDiv.hide(); var successHandler = function(data, textStatus, jqXhr) { $resultDiv.html(data); $resultDiv.fadeToggle(200); }; $form.submit(function(ev) { ev.preventDefault(); if (! $resultDiv.is(':visible')) { $.post( '/path/to/your/script', $form.serialize(), successHandler ); } else { $resultDiv.fadeToggle(200); } }); 

(另外,由于这是一个测试帖,你可能不会在你的实际代码中这样做,但是为了天堂的缘故,要非常小心一个脚本,它向用户显示有关其内部工作的信息,或者回显一个脚本用户提供的内容,未转义,返回到网页。这是迈向相当重要安全漏洞的第一步。)

你可以试试这个:

不要使用display: none; 在CSS中,而是由JQuery做。

  

这就是你要做的:

 
KASTEN: