Большинство методов jQuery Ajax возвращают объект XMLHttpRequest (или эквивалентный), поэтому вы можете просто использовать abort()
.
См. документацию:
var xhr = $.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
//kill the request
xhr.abort()
UPDATE: с jQuery 1.5 возвращаемый объект является оболочкой для собственного объекта XMLHttpRequest, называемого jqXHR. Этот объект, как представляется, раскрывает все собственные свойства и методы, поэтому приведенный выше пример все еще работает. См. Объект jqXHR (документация jQuery API).
ОБНОВЛЕНИЕ 2: Начиная с jQuery 3, метод ajax теперь возвращает обещание с помощью дополнительных методов ( например, прерывание), поэтому приведенный выше код все еще работает, хотя возвращаемый объект уже не является xhr
. См. Блог 3.0 здесь .
ОБНОВЛЕНИЕ 3: xhr.abort()
все еще работает на jQuery 3.x. Не предполагайте, что обновление 2 верное. Дополнительная информация о репозитории jQuery Github .
Поскольку существует способ избавиться от этих ложных пропущенных событий, я решил сбросить счетчик потерянных событий в файле ETL напрямую:
Если вы вызываете этот метод, вы можете сбросить счетчик LostEvents, который является int:
// Lost event offset is taken from _TRACE_LOGFILE_HEADER32/64 which is the same for x64 and x86
const int LostEventOffset = 0x98;
private static void ResetLostEvents(string etlFile)
{
using (var file = File.OpenWrite(etlFile))
{
file.Seek(LostEventOffset, SeekOrigin.Begin);
using (BinaryWriter overwriter = new BinaryWriter(file))
{
overwriter.Write((int)0);
}
}
}
Это было проверено на Win7 и 10 x86, x64, которые работают для всех файлов ETL, которые я получил до сих пор.