AJAX加载不同表单提交的gif不同
AJAX loading gif different for different form submits
我有一个页面,其中有3个表单。当我提交不同的提交时,我想显示3个不同的gif,但相反,它显示的是三个都相同的图像。此外,它不一致,因为有时它在第一次点击时显示gif,然后在接下来的两次点击中不显示,有时它在所有三次点击中都显示,但在那之后,如果我再次点击提交,则会显示结果,但它不会在加载gif图像时显示。这是我的代码:
<div id="wait"
style="display: none; width: 32px; height: 43px;
position: absolute; top: 75%; left: 75%; padding: 2px;">
<!-- this is one of the gifs -->
<img src="images/demo_wait.gif" width="32" height="32" />
<br> <br>Please Wait
</div>
<div class="container">
<h4 style="color: #447099;">Select a region to proceed</h4>
<br> To Schedule:
<form id="myform1" name="myform1"
action="/AWSCustomerJavaWebFinal/ServiceAmazon" method="get"
onsubmit="return promptMessage()">
<select name="availableRegion" id="availableRegion"
style="width: 142px; margin-left: 15px;" class="btn btn-primary">
<option value="sr">Select Region</option>
<option value="us-east-1">North Virginia</option>
</select> Instance ID<input type="text" name="instanceId"> <input
type="submit" id=button1 value="submit" class="btn btn-primary">
<div id='content2'></div>
</form>
<script type="text/javascript">
var form2 = $('#myform1');
form2.submit(function() {
$.ajax({
type : form2.attr('method'),
url : form2.attr('action'),
data : form2.serialize(),
success : function(data) {
var result2 = data;
$('#content2').html(result2);
}
});
return false;
});
$(document).ready(function() {
$(document).ajaxStart(function() {
$("#wait").css("display", "block");
});
$(document).ajaxComplete(function() {
$("#wait").css("display", "none");
});
});
</script>
</div>
<div class="container">
<h3>View Instance Status:</h3>
<form id="myform2" name="myform2"
action="/AWSCustomerJavaWebFinal/ServiceInstances" method="get"
onsubmit="return messagePrompt()">
<select name="availableRegion" id="availableRegion"
style="width: 142px; margin-left: 15px;" class="btn btn-primary">
<option value="sr">Select Region</option>
<option value="us-east-1">North Virginia</option>
</select> <input type="submit" value="View Status" id="button2"
class="btn btn-primary"><br></br>
<div id='content'></div>
</form>
<script type="text/javascript">
var form = $('#myform2');
form.submit(function() {
$.ajax({
type : form.attr('method'),
url : form.attr('action'),
data : form.serialize(),
success : function(data) {
var result = data;
$('#content').html(result);
}
});
return false;
});
$(document).ready(function() {
$(document).ajaxStart(function() {
$("#wait").css("display", "block");
});
$(document).ajaxComplete(function() {
$("#wait").css("display", "none");
});
});
</script>
</div>
<br>
</fieldset>
<div class="container">
<form id="myform3" name="myform3" action="viewSchedule.jsp"
method="get">
<br> To view Schedule: <input type="submit"
value="View Schedule" id="button3" class="btn btn-primary">
<div id='content1'></div>
</form>
<script type="text/javascript">
var form1 = $('#myform3');
form1.submit(function() {
$.ajax({
type : form1.attr('method'),
url : form1.attr('action'),
data : form1.serialize(),
success : function(data) {
var result1 = data;
$('#content1').html(result1);
}
});
return false;
});
$(document).ready(function() {
$(document).ajaxStart(function() {
$("#wait").css("display", "block");
});
$(document).ajaxComplete(function() {
$("#wait").css("display", "none");
});
});
</script>
</div>
我试着为3个不同的图像使用不同的div id wait,wait1和wait3,在这个中更改了等待:
$(document).ready(function() {
$(document).ajaxStart(function() {
$("#wait").css("display", "block");
});
$(document).ajaxComplete(function() {
$("#wait").css("display", "none");
});
});
并在3个不同的div容器中添加div id=wait,似乎什么都不起作用。
我会这样做(表2是所有这些的示例,请参阅对更改的评论)
<div id="wait"
style="display: none; width: 32px; height: 43px;
position: absolute; top: 75%; left: 75%; padding: 2px;">
<!-- Add ID to image to make it addressable -->
<img id="waitimage" src="images/demo_wait.gif"
width="32" height="32" />
<br> <br>Please Wait
</div>
form2.submit(function() {
//Set correct wait image
$("$waitimage").src = "images/demo_wait2.gif";
//Show WAIT
$("#wait").css("display", "block");
//Perform call
$.ajax({
type : form2.attr('method'),
url : form2.attr('action'),
data : form2.serialize(),
success : function(data) {
var result2 = data;
$('#content2').html(result2);
//HIDE wait
$("#wait").css("display", "none");
}
});
return false;
});
我会对它做什么:
- 我会创建一个gif模板
- 然后我会在提交时以特定的形式进行准备
- ajax完成后,我会将其从表单中删除
像这样:
1.模板创建:
var loadingGif = '<div class="wait">'+
'<img src="images/demo_wait.gif" width="32" height="32" />'+
'<br> <br>Please Wait'+
'</div>';
2.当表单提交时,我会附加它:
<script type="text/javascript">
var loaderObj = {
showGif : function(form){
var loadingGif = '<div class="wait">'+
'<img src="images/demo_wait.gif" width="32" height="32" />'+
'<br> <br>Please Wait'+
'</div>';
form.prepend(loadingGif); // <----prepend it here.
},
removeGif : function(form){
form.find('.wait').remove(); // <--------remove it here.
}
};
var form2 = $('#myform1');
form2.submit(function() {
$.ajax({
type : form2.attr('method'),
url : form2.attr('action'),
data : form2.serialize(),
beforeSend:function(){
loaderObj.showGif(form); //<-----show the loading gif here.
},
success : function(data) {
var result2 = data;
$('#content2').html(result2);
},
complete:function(){
loaderObj.removeGif(form); //<-----call to remove here.
}
});
return false;
});
</script>
相关文章:
- jQuery:循环一个具有不同超时值的循环
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 为什么这在IE中的工作方式与在Firefox中不同
- ajax请求的顺序总是不同的
- 使用每次都不同的transclude重复指令
- 不同浏览器中的空白字符正则表达式行为
- delete关键字在全局变量上的不同行为
- 如何根据时间运行不同的脚本
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 不同字体的字母间距不同
- 如何在javascript中获取不同的选定值
- 如何在不同的url angularjs上更改类名
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 根据select选项元素将表单重定向到不同的URL
- Chrome扩展:遍历不同的页面并收集数据
- javascript自执行函数-不同的语法
- AJAX加载不同表单提交的gif不同
- 我想在画布上画一个动画,我是否必须使用许多不同的图片,或者它可以像一个真正的动画(.gif可能)保存在一个文件中