2016-05-12 59 views
0

我在页面中有10个表格&那里的数据通过ajax提交,现在我不想为每个表单创建一个AJAX脚本。因此,这里是我的尝试如何创建动态AJAX提交表格

var form_id = $(this).closest("form").attr('id'); 
     $(document).on("submit", "#"+form_id, function(e){ 
     e.preventDefault(); 
var postData = $("#"form_id).serialize() 
var send = true; 
var ptel = 1; 

$("#"+form_id).find("input").each(function() { 
    if ($(this).val() === '') { send = false; ptel = 0; } 
}); 
if(ptel == 0) { bootbox.alert('Please Fill All fields'); } 
    if(send){ 
    $('form_id').trigger("reset"); 
    $.ajax({ 
    type: "POST", 
    url: "/ajax/X-Profile", 
    data: postData,      
    cache: false, 
    success: function(msg) 
{ 

bootbox.alert('Your Profile has been updated.'); 
    } 

}); 
} 
return false; 
}); 

VAR form_id不确定的,因为当页面加载结果没有属性被定义为它

上面的代码只是为了让你明白, 所以我的问题是如何才能让10所形成提交通过单个AJAX功能

+0

难道你不能在按钮上单击窗体吗?获取该按钮的最接近的表单ID并触发AJAX调用 –

+0

$(“#”form_id).serialize() - 缺少一个'+' - '$(“#”+ form_id).serialize()'。还有'$('form_id')。trigger(“reset”);' - 可能是错误的? – Pete

+0

@Pete我已经在帖子中告诉过,这段代码只是作为参考,它只是在以上代码中输入错误 –

回答

1

可以创建一个功能,诸如SendForm(),并将它附加到形式onsubmit属性

<form id="yourid" onsubmit="SendForm(this);return false;"> 

的SendForm()函数中把你的脚本

例如:

function SendForm(form) {  
    var postData = form.serialize(); 
    // .......etc 
} 

要知道哪些形式是PHP提交,你可以将一个隐藏的输入表单内或有SendForm第二个参数,获得通过发送,如SendForm(节点,formtype)

如果窗体未提交或页面重新加载,删除onsubmit属性,并添加到您的JS,而不是

$(document).on("submit","form", function(e){ 
    e.preventDefault(); 
    SendForm($(this)); 
    return false; 
}); 
+0

请问能澄清什么是节点? –

+0

这只是你通过函数发送的表单。我会更改名称以清楚说明。 –

+0

提交表单后刷新页面 –

1

有像下面

<script type="text/javascript"> 
    function submitForm(formID) { 
     data = $('#'+formID).serialize(); 
     //your ajax code 
    } 
</script> 

现在使用输入按钮上用onclick像下面,并通过形式ID作为参数

<input type="button" value="Submit" onclick="submitForm({formID})"> 

这将无需刷新页面运行JavaScript函数。成功后,您可以触发reset()函数来形成特定的表单值。