Привет всем, у меня есть этот код:
function test()
{
req = new XMLHttpRequest();
req.upload.addEventListener("progress", updateProgress, false);
req.addEventListener("readystatechange", updateProgress, false);
req.addEventListener("error", uploadFailed, false);
req.addEventListener("abort", uploadCanceled, false);
var data = generateRandomData(currentPayloadId);
totalSize = data.length;
req.open("POST", "www.mydomain.com/upload.aspx");
start = (new Date()).getTime();
req.send(data);
}
function updateProgress(evt)
{
if (evt.lengthComputable) {
total = totalSize = evt.total;
loaded = evt.loaded;
}
else {
total = loaded = totalSize;
}
}
Кроме того, мой сервер отвечает на первоначальный запрос OPTIONS для upload.aspx с 200 и Access-Control-Allow-Origin: *, а затем происходит второй запрос POST
Кажется, все на месте, и оно отлично работает в FireFox, но в G Chrome обработчик updateProgress не вызывается, а только один раз, а затем lengthComputable имеет значение false.
Мне нужен Access-Control-Allow-Origin: * потому что это междоменный вызов, родительский скрипт является ресурсом на другом сервере, чем домен upload.aspx
Кто-нибудь может дать мне некоторые подсказки, подсказки, помогите, пожалуйста? это известная проблема с G Chrome?
Благодарю вас! Ова


func updateProgressможет быть полностью пропущено, если событие xhr progress установилоevt.lengthComputableв false. Я не совсем уверен в том, что определяет такое поведение, но, похоже, это происходит при обмене небольшими порциями в запросах. Вы можете легко проверить завершение {в той же функции} (только), проверив свойства обработчиков событийpositionиloaded. (кстати, этот синтаксис не (скорее всего) совместим с новейшими версиями jquery.) - person Cristian Cavalli   schedule 21.03.2014