非ajax方式提交表单不刷新页面

Ajax最大的特点就是可以不刷新页面而实现数据的通信及更改页面信息。那么用AJAX进行后台通信传递字符串还是可以的,遇到上传文件该怎么办呢?基于安全考虑,JS是不能直接进行文件操作的,只好用原始的from来提交文件上传了。这样一来,用form不就要刷新页面了吗?其实也不是。

这是网上找的一个一般通用的处理方法

给我们的from加一个target属性,并且将这个属性的值设置为隐藏的iframe的ID,这样一来,刷新的页面是我们隐藏的iframe,我们的页面就不会刷新了。这个方法,时广大前辈的知识和经验的结晶,我是不费吹灰之力拿来用了,站在巨人的肩膀上。

<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
<title>AjaxUpload</title>  
</head>  
<body onLoad="javascript:alert('onload')" onUnload="javascript:alert('onunload')">   
<form name="AjaxUpload" method="post" action="upload.jsp" target="hidden_frame">  
<input type="submit" name="Submit" value="提交">  
</form>  
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>   
</body>  
</html>

但这种当动态生的的表单貌似无效比如

<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>

document.write("<form action=${adminPath}/charts/echarts/xxx method=post  target="hidden_frame" name=form1 id=form1 style='display:none'>"); 
document.write("<input type=hidden name='name' value='xxx'/>")
document.write("<input type=hidden name='username' value='xxx'/>")
document.write("</form>")
document.form1.submit();

解决办法 

可以直接往iframe的dom对象种写入表单来解决

body里加iframe<iframe id="rfFrame" name="rfFrame" src="about:blank" style="display:none;"></iframe>
js新建iframe
 var iframe = document.createElement('iframe');
 iframe.src="about:blank";
 iframe.id="rfFrame";
 iframe.name="rfFrame";
 iframe.style="display:none;";
 document.body.appendChild(iframe);


var window1=$("#rfFrame")[0].contentWindow;
window1.document.write("<form action=${adminPath}/charts/echarts/xxx method=post  target="hidden_frame" name=form1 id=form1 style='display:none'>");
window1.document.write("<input type=hidden name='name' value='xxx'/>")
window1.document.write("<input type=hidden name='username' value='xxx'/>")
window1.document.write("</form>")
window1.document.form1.submit();

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax无刷新提交表单是通过使用JavaScript的Ajax技术,将表单数据异步发送给服务器进行处理,而无需刷新整个页面。 首先,我们需要创建一个表单,并为表单添加一个提交事件的监听器。在提交事件发生时,阻止表单的默认提交行为。 然后,使用JavaScript中的FormData对象获取表单中的数据。我们可以通过FormData的append方法将表单元素的值添加到FormData对象中。 接下来,创建一个XMLHttpRequest对象,并使用该对象向服务器发送请求。我们可以使用open方法来指定请求的类型、URL和是否异步。然后,为XMLHttpRequest对象添加一个onreadystatechange事件的监听器,以便在服务器响应返回时进行处理。 在服务器响应返回后,我们可以通过XMLHttpRequest对象的readyState和status属性来判断服务器的响应状态。当readyState为4且status为200时,表示服务器响应成功。 如果服务器返回的数据需要展示在页面上,我们可以使用responseText或responseXML属性来获取服务器返回的内容。 最后,我们可以根据服务器返回的结果,动态更新页面的内容,而无需刷新整个页面。可以使用JavaScript来修改DOM元素的内容或样式。 总结起来,Ajax无刷新提交表单使得我们能够将表单数据异步发送给服务器,而无需刷新整个页面。这种技术可以提高用户体验,并有效减少页面刷新的次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值