1

呈现 JSP 后,我在这里尝试通过 ajax 进行异步调用以在页面上加载其他信息。

我希望 ajax 加载能够优雅地发生,而不会妨碍 UI 滚动条导航。但是调用会阻塞 UI,直到 onLoad 完成。

在其他时候,即使在鼠标单击 ajax 调用时,此服务也会阻止 UI(在pointer加载数据之前光标保持为类型)。

在这两种情况下,我都是通过 javascript 构建 DOM(比如为 div 或 table 创建 innerHTMl)。是不是因为这个?或者是其他东西?我附上了我的ajax请求代码。

感谢你的帮助。(对不起,我试图格式化代码,但我无法在这里得到它)

function requestService(theService, theParamObj, isSyncCall) {
    var ajaxRequest = getAjaxRequest();  
    var params = "data="; 
    if(theParamObj != null)
        params += encodeURIComponent(JSON.stringify(theParamObj));

    ajaxRequest.onreadystatechange = function() {
        if (ajaxRequest.readyState == 1) {
            showLoadingBox();
        }
        if (ajaxRequest.readyState == 4) {          
            handleResponse(ajaxRequest.responseText, theService, theParamObj);
            hideLoadingBox();
        }
    };

    var queryString = "?timestamp=" + new Date().getMilliseconds() + "&theService=" + theService;
    if(isSyncCall == null)
        isSyncCall = false;
    ajaxRequest.open("POST", g_Service + queryString, isSyncCall);
    ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajaxRequest.send(params);
}

更新:对此服务的 onLoad 调用

function loadAdInfo(){
   var theParamObj = {"REQUEST_URI" : window.location.href};
   requestService('getAdInfo', theParamObj, false);
}
4

1 回答 1

3

XMLHTTPObject open 方法的定义如下:

open(method,url,async)  Specifies the type of request, the URL, and if the request should be handled asynchronously or not.

method: the type of request: GET or POST
url: the location of the file on the server
async: true (asynchronous) or false (synchronous)

你传错了。所以你称之为同步

于 2013-11-06T10:24:29.770 回答