在for循环中调用一个xhr内的ajax
我正在尝试在循环xhr请求中调用ajax,但ajax结果只能让我成为最后一个..或者只是一次..
$("#txtArea").contents().find('img').each(function () {
ctr++;
xhr= new XMLHttpRequest();
xhr.open('GET', $(this).attr("src"), true);
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
var blob = this.response;
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
base64data = reader.result;
console.log("cheweee");
base64ToImage(base64data, ctr); <<--this is the ajax call
}
}
};
这里是阿贾克斯
function base64ToImage(base64data,ctr) {
$.ajax({
method: "POST",
url: "ConvertB64",
async: false,
data: {
base64datastring: base64data, imgctr: ctr
},
success: function (data) {
console.log(data);
}
})
.done(function (msg) {
console.log(msg);
});
}
所以我想要做的是..我将一个对象url转换为blob,然后通过该blob转换成图像,然后我返回图像位置为我的img标记。
在xhr方面我能够获得blob数据,但转换为图像只发生一次。 和它的最后一滴。
即时通讯使用MVC。 我尝试创建一个像这个xhr [ctr]的阵列xhr,并且我还添加了asynch:false。
谢谢
我认为问题在于你的ctr
变量被循环的所有呈现共享,并且总是等于该循环中的最终值。 尝试使用传递给.each()
函数的索引:
$("#txtArea").contents().find('img').each(function (i) {
...
...
base64ToImage(base64data, i+1); //index starts with 0 so adding 1
});
尝试使第一个Ajax请求同步,并检查.....因为你同时发送多个Ajax请求,响应没有排序,这可能是问题
链接地址: http://www.djcxy.com/p/51963.html上一篇: call a ajax inside an xhr inside a for loop
下一篇: Return value from last AJAX request in AJAX chain that is inside a for loop