开发者问题收集

无法读取未定义的属性“abort”

2019-09-18
45

每次用户输入时,我都会使用 $.get jquery 函数。 我的函数如下所示

function checkField(va) {
    $.get(
        '/admin-tool',
        {
            ctrl : 'checker',
            value : va
        },
        function(d) {
            if($('.answer',d).text() != '1') {
                $('.main h1').text('Something went wrong, Read the instructions carefuly');
            }
    });
}

我需要使用 abort() 函数来阻止之前的调用在最后一个调用之后完成其 xhr。

所以我这样做了

 var xhrcall;
 function checkField(va) {
  xhrcall.abort();
    xhrcall = $.get(
        [...]
    });
}

但是我出现了错误

Cannot read propery 'abort' of undefined

当然它没有定义,但是 ajax 函数甚至不再触发。

我在这里误解了什么吗?

1个回答

我已为您的代码提供了一些注释。请检查它们。

var xhrcall; // no value assigned here and probably nowhere else -> undefined!

function checkField(va) {
  xhrcall.abort(); // so this line causes the error and I believe JS execution stops here!!
  xhrcall = $.get(
    [...]
  });
}

如果您想执行 $.get ,请尝试以下操作(基本上,仅当 xhrcall 已初始化时才调用 abort()):

function checkField(va) {
  if (xhrcall)  { 
    xhrcall.abort(); 
  }
  xhrcall = $.get(
    [...]
  });
}

祝您黑客愉快 :)

ikos23
2019-09-18