当前位置: 首页 > 面试题库 >

通过Javascript / jQuery的Ajax HEAD请求

姬温文
2023-03-14
问题内容

我似乎在发出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

我很困惑,尽管这似乎是一个时间/范围问题。我这里有某种竞赛条件吗?


问题答案:

问题在于,对于回调函数的所有实例,单个变量iajaxSizeRequest被回调函数捕获的变量都是相同的。我认为,如果您调用一个函数并将索引变量传递给它,同时使用完成的处理程序的响应参数
在本地将请求变量范围限定到该函数本身 ,则应该以回调捕获的自变量结束。然后,它应正确引用每个数组元素和每个响应变量。

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

  • 问题内容: 如何通过JavaScript发送跨域POST请求? 注意-它不应该刷新页面,之后我需要抓取并解析响应。 问题答案: 如果你控制要发布的服务器,只需在服务器上设置响应头即可利用“跨域资源共享标准”。此答案在该主题的其他答案中进行了讨论,但我认为不是很清楚。 简而言之,这里是如何完成从from.com/1.html到to.com/postHere.php的跨域POST(以PHP为例)。注意

  • 问题内容: 我可以创建一个表单,然后使用它对任何站点发出POST请求,但FORM方法不是异步的,我需要知道页面何时完成加载。我尝试使用内置表单的iframe来解决这个问题,但没有成功。 有任何想法吗? 编辑 不幸的是,我无法控制响应数据,它从XML,json到简单文本不等。 问题答案: 您可以捕获的事件。将您的目标定位到iframe并监听加载。但是,您只能访问事件,而无法访问iframe的内容。