Jquery 制作一个动态的';ajaxForm';
我正在尝试在即时创建的表单上使用Jquery 制作一个动态的';ajaxForm';,jquery,ajaxform,on-the-fly,Jquery,Ajaxform,On The Fly,我正在尝试在即时创建的表单上使用ajaxForm。事实上,我的应用程序将“动态”生成一个链接,通过单击该链接,它将生成一个ajaxForm(同样是jQuery动态生成的!),因此我将.live()函数与ajaxForm()一起使用。这是我的错误的代码: $('form').live('submit', function() { $(this).ajaxForm({dataType: 'html', success: function(data) { alert(data)
ajaxForm
。事实上,我的应用程序将“动态”生成一个链接,通过单击该链接,它将生成一个ajaxForm
(同样是jQuery动态生成的!),因此我将.live()
函数与ajaxForm()
一起使用。这是我的错误的代码:
$('form').live('submit', function() {
$(this).ajaxForm({dataType: 'html', success: function(data) {
alert(data);
}});
return false; // For preventing page refresh!
});
在我的表单中,当我单击submit按钮时,页面将刷新
有解决方案吗?尝试使用event.stopPropagation();这是一个JQuery函数 为此,您需要将事件对象作为Handler的参数:
$('form').live('submit', function(event){
并使用此行代替return false代码>:
event.stopPropagation();
您可能需要调用preventDefault
来代替“returnfalse”。将表单与AJAX结合使用的jQuery live
用例的伪代码如下:
//Override form submit
$("form").live("submit", function (event) {
event.preventDefault();
var form = $(this);
$.ajax({
url: form.attr('action'), // Get the action URL to send AJAX to
type: "POST",
data: form.serialize(), // get all form variables
success: function(result){
// ... do your AJAX post result
}
});
});
另外,我不确定使用ajaxForm(因为我没有使用ajaxForm)时是否需要使用jQuery.live
。从医生推断,你可能根本不需要它 return false
应该可以工作,但是,当您不需要同时执行这两项操作时,最好执行event.preventDefault()
或event.stopPropagation()
。在这种情况下,它将是event.preventDefault()
,因为您希望停止提交表单的默认操作。但是就像我说的,返回false
应该在您的情况下工作,所以我怀疑您使用的插件可能会出现某种错误。如果我是你的话,我会再看一次文档
插件,并确保您的选项是正确的。就在后面,我看到了一个
数据类型:“html”
,并且只有“xml”、“script”或“json”
,如文档中所述……您可能想再看看插件的用法 正如其他人所说,您的返回false应该可以工作
所以,还有别的问题。通过在jQuery中放置调试代码,确保jQuery已正确加载,并且提交时处理程序实际执行
另外,请确保已安装并启用Firebug(或浏览器的等效程序),以便执行调试。尝试将url:“#”
添加到传递给ajaxForm函数的对象中。如果将其向后,则不希望停止传播,您只是想阻止默认行为。是否需要即时解决方案?您还没有向我们展示足够的内容。我们不知道您在何处执行此代码,也不知道如何包含jQuery,我们也看不到实际操作中的问题。是的,加载页面后将从服务器接收数据。单击链接后将显示该表单,该链接是接收数据的处理方法的一部分,该方法不是有用信息。:)对不起,我脑子里充满了错误!如何包含jQuery:simple脚本标记(由cakephp生成)。jQuery.js适用于其他元素,因此它被正确地包含。我们能在行动中看到问题吗:我不可能有这么多答案,问题应该是这个!好的,我现在来测试一下