我已经定义了一个发送jQuery Ajax请求的方法,如下所示。
sendAjaxRequest(URL, data) {
return $.ajax({
type : 'POST',
url : URL,
crossDomain : true,
data : JSON.stringify(data),
dataType : 'json'
}).fail((responseData) => {
if (responseData.responseCode) {
console.error(responseData.responseCode);
}
});
}
我从调用的位置保留了 AJAX 调用的引用。
this.ajaxRequest = sendAjaxRequest(Url, data);
如果用户通过路由转到同一网站上的另一个页面,我希望根据用户导航取消任何待处理的ajax请求。
从文档中我发现jquery jqXHR
对象有一个abort
方法来取消任何ajax请求。但是在我的ajaxRequest
对象中,我没有任何可用的这样的方法。我正在使用jquery 2.2。
为了澄清,我还想补充说明我正在使用react,并且希望实现这个功能。
componentDidMount: function() {
this.serverRequest = $.get(this.props.source, function (result) {
var lastGist = result[0];
this.setState({
username: lastGist.owner.login,
lastGistUrl: lastGist.html_url
});
}.bind(this));
},
componentWillUnmount: function() {
this.serverRequest.abort();
},
来源于该链接
他们基本上说,当异步获取数据时,在组件卸载之前使用componentWillUnmount取消所有未完成的请求。
我一定做错了什么。感谢任何帮助。
abort()
所做的只是停止浏览器监听响应。 - Rory McCrossancomponentWillUnmount
甚至都不会运行...这不是React Router或某种历史API吗? - azium