Javascript 为xmlhttprequest对象提供属性
我有以下代码:Javascript 为xmlhttprequest对象提供属性,javascript,html,Javascript,Html,我有以下代码: <head> <script> function startChanging() { var elems = document.getElementsByTagName("img"); for(var i=0; i < elems.length; i++) { var xmlhttp; if (window.XMLHttpRequest) { // c
<head>
<script>
function startChanging() {
var elems = document.getElementsByTagName("img");
for(var i=0; i < elems.length; i++)
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp["elem"] = elems[i];
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
this["elem"].src = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://myurl.com/somescript.php", true);
xmlhttp.send();
}
};
</script>
</head>
<body onload="startChanging()">
<img src="https://www.google.com/images/srpr/logo11w.png">
<br/>
<img src="https://www.google.com/images/srpr/logo11w.png">
<br/>
<img src="https://www.google.com/images/srpr/logo11w.png">
</body>
函数启动更改(){
var elems=document.getElementsByTagName(“img”);
对于(变量i=0;i
尽管我为每次迭代创建了一个新的XMLHttpRequest
实例,并将当前元素添加到属性中,但当请求返回响应时,只会更改最后一个img
元素
我正在寻找一个简单的解决方案来更改img
元素的src
,而无需在响应到来时再次遍历所有元素。我想要一个纯Javascript解决方案(阅读:no JQuery)
我确实做错了什么,我只是不明白是什么。任何帮助都将不胜感激
xmlhttp.send();
将数据放入发送方法:
xmlhttp.send(data);
资料来源:
如果data
是一个JavaScript变量,则可以将任何内容放入其中。如果需要多部分消息,可以使用var data=new-FormData()编码>并使用data.append('image',file)将数据放入其中例如,代码>用于通过ajax上传文件。
如果没有多部分,只需输入以下内容:
data = { images: document.getElementsByTagName("img") }
将数据放入发送方法:
xmlhttp.send(data);
资料来源:
如果data
是一个JavaScript变量,则可以将任何内容放入其中。如果需要多部分消息,可以使用var data=new-FormData()编码>并使用data.append('image',file)将数据放入其中例如,代码>用于通过ajax上传文件。
如果没有多部分,只需输入以下内容:
data = { images: document.getElementsByTagName("img") }
将数据放入发送方法:
xmlhttp.send(data);
资料来源:
如果data
是一个JavaScript变量,则可以将任何内容放入其中。如果需要多部分消息,可以使用var data=new-FormData()编码>并使用data.append('image',file)将数据放入其中例如,代码>用于通过ajax上传文件。
如果没有多部分,只需输入以下内容:
data = { images: document.getElementsByTagName("img") }
将数据放入发送方法:
xmlhttp.send(data);
资料来源:
如果data
是一个JavaScript变量,则可以将任何内容放入其中。如果需要多部分消息,可以使用var data=new-FormData()编码>并使用data.append('image',file)将数据放入其中例如,代码>用于通过ajax上传文件。
如果没有多部分,只需输入以下内容:
data = { images: document.getElementsByTagName("img") }
在for
循环中,您正在覆盖xmlhttp
变量,因此当您进入onreadystatechage
函数并检查xmlhttp.readyState
的值时,它将不会检查正确的对象
我建议使用此修复程序,它改变了两件事:
它将每个ajax调用放入自己的IIFE中,从而使xmlhttp
变量在每个ajax调用中保持独立
它将elems[i]
传递到闭包中,这样您就不必进行属性保存攻击
代码:
函数启动切换(){
var elems=document.getElementsByTagName(“img”);
对于(变量i=0;i
在for
循环中,您正在覆盖xmlhttp
变量,因此当您进入onreadystatechage
函数并检查xmlhttp.readyState
的值时,它将不会检查正确的对象
我建议使用此修复程序,它改变了两件事:
它将每个ajax调用放入自己的IIFE中,从而使xmlhttp
变量在每个ajax调用中保持独立
它将elems[i]
传递到闭包中,这样您就不必进行属性保存攻击
代码:
函数启动切换(){
var elems=document.getElementsByTagName(“img”);
对于(变量i=0;i
在for
循环中,您正在覆盖xmlhttp
变量,因此当您进入onreadystatechage
函数时