我正在对我的Web服务器进行AJAX调用,从而获取了很多数据。我显示了一个加载图像,该图像在执行ajax调用时旋转,然后逐渐消失。
我注意到的是,此特定呼叫上的所有浏览器都将使其在7秒钟内无响应。话虽这么说,加载图像并没有像我在获取时所计划的那样旋转。
我不知道这是不是发生了某种事情,或者是否有办法解决,在某种意义上说是导致有一个fork()使其做1件事,而我的加载图标仍然旋转。
有想法吗?有想法吗?
以下是某人希望看到的代码:
$("div.loadingImage").fadeIn(500);//.show();
setTimeout(function(){
$.ajax({
type: "POST",
url: WEBSERVICE_URL + "/getChildrenFromTelTree",
dataType: "json",
async: true,
contentType: "application/json",
data: JSON.stringify({
"pText": parentText,
"pValue": parentValue,
"pr_id": LOGGED_IN_PR_ID,
"query_input": $("#queryInput").val()
}),
success: function (result, textStatus, jqXHR) {
//alert("winning");
//var childNodes = eval(result["getChildrenFromTelTreeResult"]);
if (result.getChildrenFromTelTreeResult == "") {
alert("No Children");
} else {
var childNodes = JSON.parse(result.getChildrenFromTelTreeResult);
var newChild;
//alert('pText: '+parentText+"\npValue: "+parentValue+"\nPorofileID: "+ LOGGED_IN_PR_ID+"\n\nFilter Input; "+$("#queryInput").val() );
//alert(childNodes.length);
for (var i = 0; i < childNodes.length; i++) {
TV.trackChanges();
newChild = new Telerik.Web.UI.RadTreeNode();
newChild.set_text(childNodes[i].pText);
newChild.set_value(childNodes[i].pValue);
//confirmed that newChild is set to ServerSide through debug and get_expandMode();
parentNode.get_nodes().add(newChild);
TV.commitChanges();
var parts = childNodes[i].pValue.split(",");
if (parts[0] != "{fe_id}" && parts[0] != "{un_fe_id}") {
newChild.set_expandMode(Telerik.Web.UI.TreeNodeExpandMode.ServerSide);
}
}
}
//TV.expand();
//recurseStart(TV);
},
error: function (xhr, status, message) {
alert("errrrrror");
}
}).always(function () {
$("div.loadingImage").fadeOut();
});
},500);
我的一个同事注意到了这个问题,建议我添加一个setTimeout(function(){..},500); 但它不能解决当前问题,因此很可能会将其删除。
由于JavaScript是单线程的,因此许多同步处理将使事件队列挂起并阻止其他代码执行。在您的情况下,是因为for循环会在浏览器执行期间锁定浏览器。
您可以尝试将所有迭代放入事件队列中。
for (var i = 0 ; i < childNodes.length ; i = i + 1) {
(function(i) {
setTimeout(function(i) {
// code-here
}, 0)
})(i)
}
这应该使处理间隔开,而不是迫使浏览器立即完成所有处理。自执行功能在那里创建一个闭包以保持循环计数器i的值。
我正在尝试为NBA数据创建一个网络刮板。当我运行以下代码时: 请求因错误而超时: 文件“C:\ProgramData\Anaconda3\lib\site packages\requests\api.py”,第70行,在get返回请求中('get',url,params=params,**kwargs) 文件“C:\ProgramData\Anaconda3\lib\site packages\r
我是Node.js的初学者,所以根据项目要求,我试图从Node.js调用REST服务,我从这个SO问题中获得了如何调用rest的信息。这是进行rest调用的代码: 问题是我想发送作为对浏览器的响应,我尝试了但它给我抛出了错误“写入方法未找到”。我到处都在文档中查找,但他们给出的只是console.log.有人能让我知道如何将该数据作为响应发送到浏览器吗?
问题内容: 我想在javascript /浏览器中启用ajax响应的缓存。 从jquery.ajax docs : 默认情况下,始终发出请求,但浏览器可能会在其缓存之外提供结果。要禁止使用缓存的结果,请将cache设置为false。如果自上次请求以来未修改资产,则导致请求报告失败,请将ifModified设置为true。 但是,这些地址都没有强制缓存。 动机: 我想在我的初始化函数中放入调用,其中
问题内容: 好像我使用加载动态内容,结果缓存在浏览器中。 在QueryString中添加一些随机字符串似乎可以解决此问题(我使用),但这听起来像是一种hack。 还有其他方法可以做到这一点吗?或者,如果唯一字符串是实现此目标的唯一方法,则除之外还有其他建议吗? 问题答案: 我使用,这将避免冲突,除非您在同一毫秒内发生多个请求: 编辑: 这个答案已经好几年了。它仍然有效(因此我没有删除它),但是 现
问题内容: 因此,我正在研究一种可以长时间显示页面请求的工具。 我通过使用jQuery Ajax(http://api.jquery.com/jQuery.ajax/)来做到这一点,并且我想找出获得响应时间的最佳方法。 我找到了一个描述在JavaScript中使用“日期”的线程(http://forum.jquery.com/topic/jquery-get-time- of-ajax-post)
第一次打开应用程序时,我的应用程序冻结了一段时间。从那里开始,应用程序立即启动。为什么会发生这种情况,有什么方法可以解决这个问题?我试着用一个小图片添加一个简单的活动,即使这样,它第一次停止了。