最近再写一个表单的时候,忽然不想用ajax向后台传值。记得jquery也有submit的方法,直接提交就完了。于是,开写代码。
<form id="myForm" action="url" method="post">
<div>
<em>您的姓名</em>
<label>
<input type="text" value="" name="userName" placeholder="请填写真实姓名"/>
</label>
</div>
<div>
<em>您的手机</em>
<label>
<input type="tel" value="" name="mobile" placeholder="请填写手机号码"/>
</label>
</div>
<div>
<input type="submit" value="立即报名" class="submit"/>
</div>
</form>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$('.submit').click(function () {
//验证成功
$('#myForm').submit(function () {
alert('报名成功!');
});
});
</script>
嗯嗯,代码写完了。非常简单,但是问题出现了,我应该怎么接收后台的反馈呢。再发ajax请求?!哎呦,那还不如一开始就用ajax请求呢。或者直接改成ajax请求?!倔强少女表示不太开心呢,在ajax出现之前,一定有其他方式进行异步请求的操作,是什么呢?百度了下,发现有提到iframe。那就先用iframe试试看吧。
<iframe src="" name="myIframe" style="display: none;"></iframe>
<form id="myForm" action="url" method="post" target="myIframe">
<div>
<em>您的姓名</em>
<label>
<input type="text" value="" name="userName" placeholder="请填写真实姓名"/>
</label>
</div>
<div>
<em>您的手机</em>
<label>
<input type="tel" value="" name="mobile" placeholder="请填写手机号码"/>
</label>
</div>
<div>
<input type="submit" value="立即报名" class="submit"/>
</div>
</form>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$('.submit').click(function () {
//验证成功
$('#myForm').submit(function () {
//通过获取iframe接收后台数据,判断表单是否提交成功
$('iframe[name=myIframe]').on('load', function() {
//获取iframe数据
var res = $('iframe')[0].contentDocument?JSON.parse($('iframe')[0].contentDocument.body.innerText):JSON.parse($('iframe')[0].contentWindow.document.body.innerText);
if(parseInt(res.code)===200){
alert('报名成功!');
//报名成功后,刷新页面
var timer=setTimeout(function () {
window.location.href=window.location.href;
clearTimeout(timer);
},0);
}else{
alert('报名失败!');
}
});
});
});
</script>
嗯,成功了。值得一提的是:iframe提交表单需要将 iframe的name属性和from表单的target属性设置为相同的值