Привет всем У меня есть этот код:XMLHttpRequest в Google-хром не сообщает о событиях в ходе
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 является ложным.
мне нужен-Allow-Origin Access-Control: *, потому что это вызов междоменное, родительский сценарий представляет собой ресурс на другом сервере, то область upload.aspx
Любой человек может дать мне некоторые подсказки, подсказки, пожалуйста, помогите? это известная проблема с G Chrome?
Спасибо! Яйцеклетки
Работает ли это, когда это не CORS? Если это произойдет, поднимите ошибку на http://crbug.com/new – Kinlan
для людей, оглядывающихся вокруг, тело eval update fungress может быть полностью пропущено, если событие прогресса xhr установило 'evt.lengthComputable' значение false. Я не совсем уверен в том, что определяет это поведение, но, похоже, это происходит с небольшими обменами в запросах. Вы можете легко проверить {в той же функции} завершение (только), проверив свойства обработчика событий 'position' и' loaded'. (btw этот синтаксис не является (скорее всего) совместимым с новейшими итерациями jquery.) –
Поскольку вы используете абсолютный URL-адрес, не следует начинать с: «http: //»? –