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: