ajax提交表单

本文介绍了一种利用Ajax技术实现网页表单异步提交的方法。通过JavaScript代码遍历表单元素并构造提交内容,最终将数据发送到服务器。文章还涵盖了如何根据不同类型的表单元素(如文本框、复选框等)正确处理其值。

ajax提交表单
关键字: ajax

function ajaxSubmitForm(form, resultDivId) {          
var elements = form.elements;// Enumeration the form elements          
var element;          
var i;          
var postContent = "";// Form contents need to submit         
for(i=0;i<elements.length;++i) {                  
var element=elements[i];          
if(element.type=="text" || element.type=="textarea" || element.type=="hidden") {          
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";          
}          
else if(element.type=="select-one"||element.type=="select-multiple") {          
var options=element.options,j,item;          
for(j=0;j<options.length;++j){          
item=options[j];          
if(item.selected) {                  
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(item.value) + "&";                          
}          
}          
} else if(element.type=="checkbox"||element.type=="radio") {          
if(element.checked) {                          
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";                       
}                
} else if(element.type=="file") {                        
if(element.value != "") {                                
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";                       
}                
} else {                                
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";              
}          
}          
alert(postContent);          
ajaxSubmit(form.action, form.method, postContent);          
}          
// url - the url to do submit          
// method - "get" or "post"          
// postContent - the string with values to be submited          
// resultDivId - the division of which to display result text in, in null, then          
// create an element and add it to the end of the body         
function ajaxSubmit(url, method, postContent, resultDivId)            {          
var loadingDiv = document.getElementById('loading');              
// call in new thread to allow ui to update                 
window.setTimeout(function () {                        
loadingDiv.innerText = "Loading....";                     
loadingDiv.style.display = "";            
}, 1);              
// code for Mozilla, etc.          
if (window.XMLHttpRequest)                {                        
xmlhttp=new XMLHttpRequest();           
}                
// code for IE             
else if (window.ActiveXObject)                    {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");                 
}                
if(xmlhttp) {                   
xmlhttp.onreadystatechange = function() {                              
// if xmlhttp shows "loaded"                              
if (xmlhttp.readyState==4)                                   {
if(resultDivId) {                                              
document.getElementByID(resultDivId).innerHTML = xmlhttp.responseText;                                  
} else {          
var result = document.createElement("DIV");         
result.style.border="1px solid #363636";          
result.innerHTML = xmlhttp.responseText;         
document.body.appendChild(result);                                    
}                                        
loadingDiv.innerHTML = "Submit finnished!";                            
}                        
};                      
if(method.toLowerCase() == "get") {                             
xmlhttp.open("GET", url + "?" + postContent, true);                               
xmlhttp.send(null);                     
} else if(method.toLowerCase() == "post") { 
xmlhttp.open("POST", url, true); 
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xmlhttp.send(postContent);   
}          
} else {  
loadingDiv.innerHTML = "Can't create XMLHttpRequest object, please check your web browser.";  
}     
}

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器的建模与仿真展开,重点介绍了基于Matlab的飞行器动力学模型构建与控制系统设计方法。通过对四轴飞行器非线性运动方程的推导,建立其在三维空间中的姿态与位置动态模型,并采用数值仿真手段实现飞行器在复杂环境下的行为模拟。文中详细阐述了系统状态方程的构建、控制输入设计以及仿真参数设置,并结合具体代码实现展示了如何对飞行器进行稳定控制与轨迹跟踪。此外,文章还提到了多种优化与控制策略的应用背景,如模型预测控制、PID控制等,突出了Matlab工具在无人机系统仿真中的强大功能。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程师;尤其适合从事飞行器建模、控制算法研究及相关领域研究的专业人士。; 使用场景及目标:①用于四轴飞行器非线性动力学建模的教学与科研实践;②为无人机控制系统设计(如姿态控制、轨迹跟踪)提供仿真验证平台;③支持高级控制算法(如MPC、LQR、PID)的研究与对比分析; 阅读建议:建议读者结合文中提到的Matlab代码与仿真模型,动手实践飞行器建模与控制流程,重点关注动力学方程的实现与控制器参数调优,同时可拓展至多自由度或复杂环境下的飞行仿真研究。
使用 Ajax 提交表单主要有以下几种方法: ### jQuery 中的 $.ajax 方法 通过创建 `FormData` 对象收集表单数据,并使用 `$.ajax` 方法发送请求。以下是示例代码: ```javascript function submitImage() { // 这里把表单的 ID 传进去 var obj = new FormData(document.getElementById("coachForm")); $.ajax({ type: 'post', url: '${pageContext.request.contextPath}/upload/coachImgPic.do', data: obj, // 告诉 jQuery 不要去处理发送的数据 processData: false, // 告诉 jQuery 不要去设置 Content-Type 请求头,因为表单已经设置了 multipart/form-data contentType: false, success: function (data) { console.log(data); $('#imgpic').attr(data); $('#photo').attr(data); } }); } ``` 上述代码中,通过 `FormData` 对象获取表单数据,然后使用 `$.ajax` 方法将其发送到指定的 URL,并在成功时更新页面元素 [^2]。 ### 原生 JavaScript 方法 使用 `XMLHttpRequest` 对象来实现表单数据的提交,示例代码如下: ```javascript const submit = function (formEle) { return new Promise(function (resolve, reject) { // Serialize form data // See https://htmldom.dev/serialize-form-data-into-a-query-string const params = serialize(formEle); // Create new Ajax request const req = new XMLHttpRequest(); req.open('POST', formEle.action, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); // Handle the events req.onload = function () { if (req.status >= 200 && req.status < 400) { resolve(req.responseText); } }; req.onerror = function () { reject(); }; // Send it req.send(params); }); }; // 用法 const formEle = document.getElementById(...); submit(formEle).then(function (response) { // `response` is what we got from the back-end // We can parse it if the server returns a JSON const data = JSON.parse(response); ... }); ``` 上述代码中,定义了 `submit` 函数,它接受一个表单元素作为参数,将表单数据序列化后使用 `XMLHttpRequest` 对象发送请求,并通过 `Promise` 处理响应 [^4]。 ### 通过监听表单提交事件并序列化数据 在表单的 `onsubmit` 事件中阻止默认提交行为,然后使用 `serialize()` 函数获取表单数据并通过 `$.ajax` 发送请求。示例代码如下: ```javascript // 假设表单 ID 为 addTaskform $('#addTaskform').on('submit', function (e) { e.preventDefault(); // 阻止表单默认提交行为 $.ajax({ type: 'post', url: 'your-url', data: $('#addTaskform').serialize(), success: function (data) { console.log(data); } }); }); ``` 上述代码中,监听表单提交事件,阻止默认提交行为,然后使用 `serialize()` 函数将表单数据序列化并通过 `$.ajax` 方法发送 [^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值