我似乎在发出HEAD
请求以及保持数组中数据完整性方面遇到一些问题。
给出以下代码段:
var imageTemp = Array();
$('*')
.each(function(index){
if($(this).css('background-image') != 'none'){
imageTemp.push($(this).css('background-image').slice(5, -2));
}
});
我捕获给定页面上所有背景图像的URL。现在,尝试通过HEAD
请求获取每个图像的大小Content-Length
,我使用以下代码段:
var imageData = Array();
for(var i = 0; i < imageTemp.length; i++){
ajaxSizeRequest = $.ajax({
type: "HEAD",
async: true,
url: imageTemp[i],
success: function(message){
imageData.push([imageTemp[i], ajaxSizeRequest.getResponseHeader('Content-Length')]);
}
});
}
但是,当我imageData
通过via 转储时console.log
,每个元素(应该是包含URL和content-
length的数组)最终都以上次请求的大小始终在[undefined, XXXX]
哪里XXXX``Content-Length
我很困惑,尽管这似乎是一个时间/范围问题。我这里有某种竞赛条件吗?
问题在于,对于回调函数的所有实例,单个变量i
和ajaxSizeRequest
被回调函数捕获的变量都是相同的。我认为,如果您调用一个函数并将索引变量传递给它,同时使用完成的处理程序的响应参数
在本地将请求变量范围限定到该函数本身
,则应该以回调捕获的自变量结束。然后,它应正确引用每个数组元素和每个响应变量。
var imageData = Array();
for(var i = 0; i < imageTemp.length; i++){
updateImageData( i );
}
function updateImageData( i )
$.ajax({
type: "HEAD",
async: true,
url: imageTemp[i],
}).done(function(message,text,jqXHR){
imageData.push([imageTemp[i], jqXHR.getResponseHeader('Content-Length')]);
});
}
问题内容: 我有一个基于jquery的单页webapp。它通过AJAX调用与RESTful Web服务进行通信。 我正在尝试完成以下任务: 将包含JSON数据的POST提交到REST URL。 如果请求指定JSON响应,则返回JSON。 如果请求指定PDF / XLS / etc响应,则返回可下载的二进制文件。 我现在有1&2,并且客户端jquery应用通过基于JSON数据创建DOM元素在网页上显
问题内容: JavaScript代码将从www.example.com通过google chrome中的网址栏启动,因此我无法使用jquery。我的目标是当我在www.example.com中启动代码时,将www.example.com/page.html的完整html源代码传递给javascript中的变量。这可能吗?如果可以,怎么办?我知道要获取当前页面源,但我不确定如何做到这一点。我认为可以
任何指针都会有帮助,我试着玩contentTypes,但还是没有运气
本文向大家介绍通过jquery的ajax请求本地的json文件方法,包括了通过jquery的ajax请求本地的json文件方法的使用技巧和注意事项,需要的朋友参考一下 自己学习jquery的ajax的经历,记录一下 ajaxTestDemo.html 在body里面放一个id为test的div 第一步还是要先加载jquery文件 jquery.min.js shuju.json文件 /* json
问题内容: 我需要发出内容类型为“ application / json”的jsonp POST请求。我可以这样向服务器发送POST请求: 但是,只要我添加了这一行:它就开始作为OPTIONS请求而不是POST发送。 如何指定内容类型并仍然以POST形式提交请求? 问题答案: 无法发出JSONP POST请求。 JSONP的工作原理是创建一个标签,该标签从另一个域执行Javascript;无法使用
问题内容: 如何通过JavaScript发送跨域POST请求? 注意-它不应该刷新页面,之后我需要抓取并解析响应。 问题答案: 如果你控制要发布的服务器,只需在服务器上设置响应头即可利用“跨域资源共享标准”。此答案在该主题的其他答案中进行了讨论,但我认为不是很清楚。 简而言之,这里是如何完成从from.com/1.html到to.com/postHere.php的跨域POST(以PHP为例)。注意