发布包含 ajax 和未知表单字段的表单
Posting a form with ajax and unknown form fields
使用 jQuery 使用 ajax.
将数据 post 发送到服务器非常简单
是否有 jquery 函数来 post 一个使用表单名称的表单并像其他传统方式一样从服务器接收状态 ajax post 来电。
但是,如果我们只是想 post 表单的名称或 ID 并且当我有一组未知的表单字段时怎么办?
我喜欢做的是在页面上获取表单,然后提交表单和当前数据
查看示例代码:
HTML
<form name='myform'>
<input type='hidden' value='1' name='somefield'>
<input type='hidden' value='2' name='somefield2'>
<input type='hidden' value='3' name='somefield3'>
</form>
<a href='#' class='postform' form_name='myform'>post using ajax</a>
JS
$('.postform').click( function() {
form_name = $(this).attr('form_name');
postto = 'http://mysite-endpoint.com/api';
form = $(form_name).submit(postto).done(function(data)
{
var ndata = jQuery.parseJSON(data);
if(ndata.status=='error')
{
//display error
}
if(ndata.status=='success')
{
//looks good
}
});
return false;
});
您可以使用jQuery $.serialize() 将表单标记化并根据表单属性提交。像这样:
$('#someform').submit(function(ev) {
ev.preventDefault();
var $form = $(this);
$.ajax($form.attr('action'), {
type: $form.attr('method') || 'get',
data: $form.serialize(),
}).then(function() {
alert('success');
}, function() {
alert('error');
});
});
使用 jQuery 使用 ajax.
将数据 post 发送到服务器非常简单是否有 jquery 函数来 post 一个使用表单名称的表单并像其他传统方式一样从服务器接收状态 ajax post 来电。
但是,如果我们只是想 post 表单的名称或 ID 并且当我有一组未知的表单字段时怎么办?
我喜欢做的是在页面上获取表单,然后提交表单和当前数据
查看示例代码:
HTML
<form name='myform'>
<input type='hidden' value='1' name='somefield'>
<input type='hidden' value='2' name='somefield2'>
<input type='hidden' value='3' name='somefield3'>
</form>
<a href='#' class='postform' form_name='myform'>post using ajax</a>
JS
$('.postform').click( function() {
form_name = $(this).attr('form_name');
postto = 'http://mysite-endpoint.com/api';
form = $(form_name).submit(postto).done(function(data)
{
var ndata = jQuery.parseJSON(data);
if(ndata.status=='error')
{
//display error
}
if(ndata.status=='success')
{
//looks good
}
});
return false;
});
您可以使用jQuery $.serialize() 将表单标记化并根据表单属性提交。像这样:
$('#someform').submit(function(ev) {
ev.preventDefault();
var $form = $(this);
$.ajax($form.attr('action'), {
type: $form.attr('method') || 'get',
data: $form.serialize(),
}).then(function() {
alert('success');
}, function() {
alert('error');
});
});