Jquery 在不知道是哪种情况下停止ajax请求

Jquery 在不知道是哪种情况下停止ajax请求,jquery,ajax,jsf-2,primefaces,spring-webflow,Jquery,Ajax,Jsf 2,Primefaces,Spring Webflow,我正在使用primefaces的自动完成组件。现在,它所做的是添加几个字符,并相应地搜索名称。现在我遇到的麻烦是键盘上的“回车”按钮。。。因为我想让enter功能化,即使你正在搜索autocomplete,你仍然可以按下它,继续得到一个更大的列表。现在,这是通过一个按钮来完成的,该按钮转到Webflow并重定向到另一个页面 现在我遇到的麻烦是,如果autocomplete开始搜索,它将启动一个Ajax请求,如果我在搜索过程中单击enter,它将启动另一个请求来执行重定向。但这里有一个陷阱:第一个

我正在使用primefaces的自动完成组件。现在,它所做的是添加几个字符,并相应地搜索名称。现在我遇到的麻烦是键盘上的“回车”按钮。。。因为我想让enter功能化,即使你正在搜索autocomplete,你仍然可以按下它,继续得到一个更大的列表。现在,这是通过一个按钮来完成的,该按钮转到Webflow并重定向到另一个页面

现在我遇到的麻烦是,如果autocomplete开始搜索,它将启动一个Ajax请求,如果我在搜索过程中单击enter,它将启动另一个请求来执行重定向。但这里有一个陷阱:第一个请求仍然处于活动状态,如果在重定向完成之前返回success,它只会中止重定向,并给出它开始的页面

现在最大的问题是:我如何停止我一无所知的第一个请求?Blackbox wise我对这个请求不太了解,只是它很烦人。我也不能通过JavaScript传递它,因为autocomplete只有一个函数,用于在开始时在请求之前加载,在完成时在请求之后加载

编辑:以下是我使用的代码,以防您需要了解:

XHTML和JavaScript:

<p:autoComplete  value="#{simpleSearchBean.searchString}" completeMethod="#   {simpleSearchBean.completeUser}"
var="user" itemLabel="#{user}" itemValue="#{user}" forceSelection="false"
minQueryLength="3" maxResults="10" name="search_block_form" id="edit-search-block-form-1" size="30" queryDelay="500" style="float:left;">
     <p:ajax event="itemSelect" oncomplete="autoClickSearchButton()" update="@all"/>
</p:autoComplete>

<p:commandButton action="simpleUserSearch" title="#{msgs_common['common.search']}" name="op" id="edit-submit" image="ui-icon ui-icon-search" style="float:left;"/>

<script type="text/javascript">
function autoClickSearchButton(){
    jQuery('#search-block-form\\:edit-submit').click();
}

jQuery('#search-block-form\\:edit-search-block-form-1').keyup(function(event){
    if(event.keyCode == 13){
        jQuery('#search-block-form\\:edit-submit').click();
    }
});
</script>   
下面是webflow的一部分:

<end-state id="simpleUserSearch" view="flowRedirect:user?searchString=#{simpleSearchBean.searchString}"/>

<global-transitions>
    <transition on="simpleUserSearch" to="simpleUserSearch" validate="false"/>
</global-transitions>

我也遇到了同样的问题解决这个问题的最好办法是:

var ajaxObject = $.ajax( {your code here} );
提交时,请执行以下操作:

ajaxObject.abort();

这将停止运行ajax脚本。

如果用户按enter键,我认为您甚至不需要监听功能。。。自动完成已经做到了这一点。。。如果希望search commandButton重定向到另一个页面,只需将ajax属性设置为false:


如果我真的编写Ajax调用,这将是可行的。。。但我不是。是你的脸对我提出了要求。。。所以我不能让它变为变量这是真的,这个例子只有在编写Ajax调用时才有效。啊,但是你确实需要输入,因为当自动完成完成它的值列表时,输入只在LOV select上有效。而不是在球场上,我仍然需要。问题是将Ajax属性设置为false不起作用,因为Get请求仍然会被finishthelist请求中止。。。这就是为什么我需要停止finish请求的原因。@RafaelCelerier中止ajax请求这不是一个好的做法。。。你必须改进你的逻辑,你必须找到替代的好方法。。。我仍然不明白什么/为什么不适合你;试试看——我看到ajax可以工作,如果按enter键,它会显示所请求的对话框。。。在pojo字段中键入Lala并按enter键,弹出窗口确实显示但未填写。他们还强制选择,这意味着如果LOV出现,你只能在其中选择,然后按enter键,我不想。。。我仍然希望inputfield值也能被搜索到。我能想到的唯一一个好方法是,扔掉素数面,用JQuery和javacontroller实现自动完成。。。但所有这些都不会很快发生。这是Primefaces Autocomplete.java。另一种方法是向返回的列表中添加自动完成字符串valueOk,这可能会起作用,但它仍然无法修复填充列表请求期间按enter键的问题。。。这是我最关心的问题
<p:commandButton ajax='false' action="simpleUserSearch" title="#{msgs_common['common.search']}" name="op" id="edit-submit" image="ui-icon ui-icon-search" style="float:left;"/>