我想显示请稍候,装载纺纱过程中处理SOAP调用循环。我有一个在谷歌Chrome和Internet Explorer的9,10,11显示模式屏幕的一个问题。 Firefox是确定。
如果我删除 $(机构)removeClass移除(装载);
从 someMethodSOAP()
,载入画面显示在谷歌Chrome和IE浏览器是正确的。
SOAP调用的持续时间为1秒,因此加载屏幕应该显示。
我要显示在谷歌Chrome和IE浏览器加载屏幕,但我不知道该怎么办呢?为什么Firefox浏览器工作正确的,谷歌Chrome和IE浏览器呢?
我用: [jQuery的2.1.1] [ HTTP://$c$c.jquery。 COM / jQuery的-2.1.1.js ] [jquery.soap 1.3.8] [ http://plugins.jquery.com/soap/ ] 从[模式窗口的解决方案:;请等候,正在下载...&QUOT [ jQuery和QUOT;动画?]
感谢你。
我的code:
的index.php
<!DOCTYPE HTML>
< HTML>
< HEAD>
< META HTTP-当量=内容类型内容=text / html的;字符集= UTF-8>
<风格类型=文本/ CSS>
.modal {
显示:无;
位置:固定;
的z-index:1000;
顶部:0;
左:0;
高度:100%;
宽度:100%;
}
/ *当身体有装载类,我们把
滚动条了与溢出:隐藏* /
body.loading {
溢出:隐藏;
}
/ *任何时候身体已经装载的类,我们的
模态元件将可见* /
body.loading .modal {
显示:块;
}
div.modal DIV {
位置:绝对的;
顶部:50%;
左:50%;
宽度:20%;
高度:10%;
保证金:-5%0 0〜10%;
文本对齐:中心;
}
< /风格>
<脚本的charset =UTF-8SRC =jQuery的-2.1.0.min.js>< / SCRIPT>
&所述;脚本的charset =utf-8的src =jquery.soap.js>&所述; /脚本>
<脚本>
VAR WEB_SERVICE_URL ='路径SOAP';
功能someMethodSOAP(ID){
VAR XML;
$ .soap({
网址:WEB_SERVICE_URL,
方法:TestMethod的,
appendMethodToURL:假的,
异步:假的,
数据: {
ID:身份证,
},
beforeSend:函数(的SoapEnvelope){
$(机构)addClass(装载)。 //装载开启
},
成功:函数(SOA presponse){// OK
XML = SOA presponse.toString();
},
错误:函数(SOA presponse){//故障:
XML = SOA presponse.toString();
}
});
$(机构)removeClass移除(装载)。 //加载关闭
返回XML;
}
$(窗口).load(函数(){
/*$("body").addClass("loading);
$(机构)removeClass移除(装载); * /
someMetodSOAP(1);
});
< / SCRIPT>
< /头>
<身体GT;
< DIV CLASS =模式> <! - 装 - >
< DIV>
&所述; IMG SRC =http://i.stack.imgur.com/FhHRx.gif'>
< / DIV>
< / DIV>
< /身体GT;
< / HTML>
编辑:
我试试这个code(下同),但仍然没有工作。
行为:方法test_loading CALL方法在服务器上,这期间5秒。这code等待(异步:假的),5秒后,网页浏览器显示加载。我不明白。装载的是显示在 someMetodSOAP(5);
完成,但我想在 someMetodSOAP显示加载(5);
<脚本>
$(窗口).load(函数(){
$(机构)addClass(装载)。
someMetodSOAP(5);
//$("body").removeClass("loading);
});
VAR WEB_SERVICE_URL ='../soap_nu.php';
功能someMetodSOAP(二){
VAR XML;
$ .soap({
网址:WEB_SERVICE_URL,
方法:test_loading
appendMethodToURL:假的,
异步:假的,
数据: {
parametr:第二
},
beforeSend:函数(的SoapEnvelope){
},
成功:函数(SOA presponse){
XML = SOA presponse.toString();
},
错误:函数(SOA presponse){
XML = SOA presponse.toString();
}
});
返回XML;
}
< / SCRIPT>
解决的: 我发现递延对象是:(我没有信誉为这个链接,抱歉)api.jquery.com/category/deferred-object/。它帮助我。 我希望能够帮助您:
<!DOCTYPE HTML>
< HTML>
< HEAD>
< META HTTP-当量=内容类型内容=text / html的;字符集= UTF-8>
<风格类型=文本/ CSS>
.block {显示:块重要}
#loading {
显示:无;
/*等等。例如CSS微调* /
}
< /风格>
&所述;脚本的charset =utf-8的src =jquery.min.js>&所述; /脚本>
&所述;脚本的charset =utf-8的src =jquery.soap.js>&所述; /脚本>
<脚本>
VAR WEB_SERVICE_URL ='路径SOAP';
功能someMethodSOAP(ID){
变种D = $ .Deferred();
$ .soap({
网址:WEB_SERVICE_URL,
方法:TestMethod的,
appendMethodToURL:假的,
异步:真正的,
数据: {
ID:身份证,
},
成功:函数(SOA presponse){// SOAP OK
尝试 {
d.resolve(SOA presponse.toString());
}赶上(五){
d.reject(SOAP_THROW);
}
},
错误:函数(SOA presponse){// SOAP错误:
尝试 {
d.reject(SOA presponse.toString());
}赶上(五){
d.reject(SOAP_THROW);
}
}
});
返回d.promise();
}
$(窗口).load(函数(){
//创建一些承诺
VAR承诺=新的Array();
promises.push(someMethodSOAP(1)); //只有一个诺言
$(#加载)addClass(块)。 //启动加载
$ .when.apply($,承诺).done(功能(XML){//解析
$(#加载)removeClass移除(块)。 //完成加载
/*通过*/
}),失败(功能(XML){//拒绝
$(#加载)removeClass移除(块)。 //完成加载
/*失败*/
});
});
< / SCRIPT>
< /头>
<身体GT;
< DIV ID =加载> <! - 装 - >
< DIV><! - CSS微调 - >< / DIV>
< / DIV>
< /身体GT;
< / HTML>
解决方案
您需要删除异步:假
,然后它会正常工作
I would like to show "please wait, loading" spinning circle during process SOAP call. I have a problem with show modal screen in Google Chrome and Internet Explorer 9,10,11. Firefox is OK.
If i remove $("body").removeClass("loading");
from someMethodSOAP()
, loading screen show correct in Google Chrome and IE.
Duration of SOAP call is one second, so loading screen should be show.
I want to show loading screen in Google Chrome and IE, but i do not know how to do it? And why Firefox browser working correct and Google Chrome and IE not?
I use: [jQuery 2.1.1][ http://code.jquery.com/jquery-2.1.1.js ] [jquery.soap 1.3.8][ http://plugins.jquery.com/soap/ ] [modal window solution from:[ jQuery "Please Wait, Loading..." animation? ]
Thank you.
my code:
index.php:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<style type="text/css">
.modal {
display: none;
position: fixed;
z-index: 1000;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
/* When the body has the loading class, we turn
the scrollbar off with overflow:hidden */
body.loading {
overflow: hidden;
}
/* Anytime the body has the loading class, our
modal element will be visible */
body.loading .modal {
display: block;
}
div.modal div {
position: absolute;
top:50%;
left:50%;
width: 20%;
height: 10%;
margin:-5% 0 0 -10%;
text-align: center;
}
</style>
<script charset="UTF-8" src="jquery-2.1.0.min.js"></script>
<script charset="UTF-8" src="jquery.soap.js"></script>
<script>
var WEB_SERVICE_URL = 'path to SOAP';
function someMethodSOAP(id) {
var xml;
$.soap({
url: WEB_SERVICE_URL,
method: "testMethod",
appendMethodToURL:false,
async: false,
data: {
ID: id,
},
beforeSend: function (SOAPEnvelope) {
$("body").addClass("loading"); //loading turn on
},
success: function (soapResponse) { //OK
xml = soapResponse.toString();
},
error: function (SOAPResponse) { //FAULT:
xml = SOAPResponse.toString();
}
});
$("body").removeClass("loading"); //loading turn off
return xml;
}
$(window).load(function() {
/*$("body").addClass("loading");
$("body").removeClass("loading");*/
someMetodSOAP(1);
});
</script>
</head>
<body>
<div class="modal"> <!-- loading-->
<div>
<img src="http://i.stack.imgur.com/FhHRx.gif'">
</div>
</div>
</body>
</html>
EDIT:
I try this code (below), but still not working.
Behavior: Method test_loading CALL method on server, which during 5 seconds. This code waiting (async:false) 5 seconds and after web browser show loading. I do not understand it. Loading is show after someMetodSOAP(5);
is completed, but I want to show loading before someMetodSOAP(5);
.
<script>
$(window).load(function() {
$("body").addClass("loading");
someMetodSOAP(5);
//$("body").removeClass("loading");
});
var WEB_SERVICE_URL = '../soap_nu.php';
function someMetodSOAP(second) {
var xml;
$.soap({
url: WEB_SERVICE_URL,
method: "test_loading",
appendMethodToURL:false,
async: false,
data: {
parametr: second
},
beforeSend: function (SOAPEnvelope) {
},
success: function (soapResponse) {
xml = soapResponse.toString();
},
error: function (SOAPResponse) {
xml = SOAPResponse.toString();
}
});
return xml;
}
</script>
SOLVED: I found deffered-object from: api.jquery.com/category/deferred-object/ (I do not have reputation for this link, sorry.). It help me. I hope that help you:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<style type="text/css">
.block {display: block !important}
#loading {
display: none;
/*etc. for example css spinner*/
}
</style>
<script charset="UTF-8" src="jquery.min.js"></script>
<script charset="UTF-8" src="jquery.soap.js"></script>
<script>
var WEB_SERVICE_URL = 'path to SOAP';
function someMethodSOAP(id){
var d = $.Deferred();
$.soap({
url: WEB_SERVICE_URL,
method: "testMethod",
appendMethodToURL:false,
async: true,
data: {
ID: id,
},
success: function (soapResponse) { //SOAP OK
try {
d.resolve(soapResponse.toString());
} catch(e){
d.reject(SOAP_THROW);
}
},
error: function (soapResponse) { //SOAP FAULT:
try {
d.reject(soapResponse.toString());
} catch(e){
d.reject(SOAP_THROW);
}
}
});
return d.promise();
}
$(window).load(function() {
//create some promises
var promises = new Array();
promises.push(someMethodSOAP(1)); //only one promise
$("#loading").addClass("block"); //start loading
$.when.apply($, promises).done(function(xml){ //Resolve
$("#loading").removeClass("block"); //finish loading
/*PASS*/
}).fail(function(xml){ //Reject
$("#loading").removeClass("block"); //finish loading
/*FAIL*/
});
});
</script>
</head>
<body>
<div id="loading"> <!--loading-->
<div><!-- css spinner --></div>
</div>
</body>
</html>
解决方案
you need to remove async: false
, then it will work fine.
上一篇:跟踪页码上滚动事件页码、事件