私は jQuery を使用して CodeIgniter で Web アプリに取り組んでおり、ajax 呼び出し中に ajax 読み込みイメージを表示する JavaScript 関数を作成しようとしています。私の例では、ajax呼び出しは成功していますが、ロードは表示されないため、問題は「when」の最初の関数が実行されていないことだと思います。誰かがこれで私を助けることができますか? ありがとう
HTML
<div id="form"></div>
CSS
#form {
height: 300px;
width: 350px;
}
.loadingOverlay {
border: 1px solid #EFEFEF;
background-color: #D8DCDF;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
position: absolute;
padding: 10px;
z-index: 1;
-moz-opacity: 0.50;
opacity: 0.50;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=50);
}
Javascript
function displayLoading(Container, Callback) {
var height = Container.height();
var width = Container.width();
$.when(function() {
Container.append('<div class="loadingOverlay" style="width: '+ width +'px; height: '+ height +'px;"><img class="ajaxLoading" src="http://www.ajaxload.info/images/exemples/2.gif" /></div>');
Container.find(".loadingOverlay").position({
"my": "center center",
"at": "center center",
"of": Container
});
Container.find(".ajaxLoading").position({
"my": "center center",
"at": "center center",
"of": Container
});
}, Callback()).then(function() {
Container.find(".loadingOverlay").hide().remove();
});
}
displayLoading($("#form"), function() {
$.ajax({
url: 'http://search.twitter.com/search.json',
dataType: 'jsonp',
data: {
q: 'ConceptionAb6'
},
success: function(results) {
// Only for testing the loading
setTimeout(function() {
alert(results.max_id);
}, 2000);
},
error: function() {
alert("error!");
}
});
});