我成功地将dajax集成到了我的项目中。它很好,但缺乏一些可以使它更好的功能 - 例如。正在处理请求的可见指示符(变暗屏幕,沙漏,等等)。我在dajaxice.js中找到了一些地方,我应该在哪里拦截请求但这不是简单的方法..你是否知道一些简单的方法或者我应该选择难的方法 - 不使用任何ajax框架并手动完成所有工作?
答案 0 :(得分:0)
这样的东西会起作用(在右上角给gmail样式加载...消息):
function useLoadingMessage(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
Dajaxice.preHook = function() {
var disabledZone = document.getElementById('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
document.getElementById('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible';
}
};
Dajaxice.postHook = function() {
document.getElementById('disabledZone').style.visibility = 'hidden';
};
}
从您的javascript document.ready脚本调用useLoadingMessage()
,或者从身体标记中的onload调用非常不可知的内容。
dajaxice.core.js中的几个黑客:
第49行:
oXMLHttpRequest.onreadystatechange = function() {
if (this.readyState == XMLHttpRequest.DONE) {
if(Dajaxice.postHook) Dajaxice.postHook();
if(this.responseText == Dajaxice.EXCEPTION || !(this.status in Dajaxice.valid_http_responses())){
error_callback();
第65行:
}
if(Dajaxice.preHook) Dajaxice.preHook();
if(method == 'POST'){
oXMLHttpRequest.send(send_data);
}
else{
javascript与库无关,它应该只涉及向Dajaxice源添加2行。如果您希望使用其他加载元素,只需在html中为id
disableZone
设置visible = hidden
,并为其css设置{{1}}。
我从dwr获取了这个解决方案,这是Java的dajaxice。它确实有一些其他很酷的功能,比如一些不错的调试页面和直接图像上传,这在dajaxice中会很方便....;)。