下面是基于jQuery通过jQuery.form.js插件使用ajax提交form表单的完整攻略:
准备工作
要使用jQuery.form.js插件,首先需要引入jQuery库和jQuery.form.js库。在HTML中,可以使用以下代码引入它们:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.form/4.3.0/jquery.form.min.js"></script>
其中,第一个<script>
标签引入了jQuery库,第二个<script>
标签引入了jQuery.form.js库。
使用ajax提交form表单
使用jQuery和jQuery.form.js插件提交form表单,需要在form表单的submit事件中使用ajax提交表单数据,代码如下:
$(function() {
$('#myForm').submit(function() { // 选中要提交的form,监听submit事件
$(this).ajaxSubmit({ // 使用ajax提交表单
success: function(data) { // 提交成功后的回调函数
console.log(data);
},
error: function(xhr) { // 提交失败后的回调函数
console.log(xhr.responseText);
}
});
return false; // 阻止表单默认提交
});
});
在上面的代码中,$(this).ajaxSubmit()
用于提交form表单,其中传入的参数是一个包含回调函数的对象。
success
回调函数在提交成功时被调用,它的参数data
是响应的数据。error
回调函数在提交失败时被调用,它的参数xhr
是XMLHttpRequest对象,可以通过它的responseText
属性获取响应的数据。
需要注意的是,要使用ajax提交form表单,表单元素的method
属性必须是post
,否则无法使用ajax提交。
示例应用
下面是两个使用jQuery.form.js插件提交form表单的示例应用。
示例一:上传文件并显示上传进度
<form id="uploadForm" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
<div id="progress"></div>
<script>
$(function() {
$('#uploadForm').submit(function() { // 选中要提交的form,监听submit事件
// 显示上传进度
var progress = $('<progress>').attr('max', 100).appendTo('#progress');
// 使用ajax提交表单
$(this).ajaxSubmit({
dataType: 'json',
beforeSend: function() { // 提交前的回调函数
// 禁用提交按钮,防止重复提交
$('button[type="submit"]').prop('disabled', true);
// 开始上传时,将进度清零
progress.val(0);
},
uploadProgress: function(event, position, total, percentComplete) { // 上传进度回调函数
// 更新上传进度
progress.val(percentComplete);
},
success: function(data) { // 提交成功后的回调函数
// 显示上传成功的提示信息
alert(data.message);
},
error: function(xhr) { // 提交失败后的回调函数
// 显示上传失败的提示信息
alert('上传失败:' + xhr.responseText);
},
complete: function() { // 提交完成后的回调函数
// 恢复提交按钮的可用状态
$('button[type="submit"]').prop('disabled', false);
// 隐藏上传进度
progress.remove();
}
});
return false; // 阻止表单默认提交
});
});
</script>
在上面的代码中,首先定义了一个含有一个文件上传输入框和一个提交按钮的form表单。然后,在提交事件中,使用$('<progress>')
创建了一个表示进度的<progress>
标签,显示了上传进度。在提交时,beforeSend
回调函数用于在提交前禁用提交按钮,防止重复提交;uploadProgress
回调函数用于在上传过程中更新上传进度;success
回调函数用于在上传成功后显示上传成功的提示信息;error
回调函数用于在上传失败后显示上传失败的提示信息;complete
回调函数用于在提交完成后恢复提交按钮的可用状态,同时隐藏上传进度。
示例二:使用ajax提交form表单跨域请求
<form id="loginForm" action="http://example.com/api/login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">登录</button>
</form>
<script>
$(function() {
$('#loginForm').submit(function() { // 选中要提交的form,监听submit事件
// 使用ajax提交表单,并设置跨域请求相关的请求头和参数
$(this).ajaxSubmit({
dataType: 'json',
headers: {
'Access-Control-Allow-Origin': '*'
},
xhrFields: {
withCredentials: true
},
success: function(data) { // 提交成功后的回调函数
// 显示登录成功的提示信息
alert(data['message']);
},
error: function(xhr) { // 提交失败后的回调函数
// 显示登录失败的提示信息
alert('登录失败:' + xhr.responseText);
}
});
return false; // 阻止表单默认提交
});
});
</script>
在上面的代码中,首先定义了一个包含用户名和密码输入框和一个提交按钮的form表单。然后,在提交事件中,使用dataType
设置了响应的数据类型为json,使用headers
设置了跨域请求相关的请求头,使用xhrFields
设置了跨域请求相关的参数。在提交成功后,success
回调函数用于显示登录成功的提示信息;在提交失败后,error
回调函数用于显示登录失败的提示信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jQuery通过jQuery.form.js插件使用ajax提交form表单 - Python技术站