在不知道哪个请求的情况下停止ajax请求

时间:2011-11-17 14:59:21

标签: jquery ajax jsf-2 primefaces spring-webflow

我正在使用primefaces的自动完成组件。现在这样做是你添加几个字符,它会相应地搜索名称。现在我遇到的麻烦是“输入”按钮(在键盘上)...因为我想让输入功能正常,即使您正在搜索自动完成功能,您仍然可以按下它并继续获得更大的列表。现在,这是通过一个按钮进入Webflow并重定向到另一个页面。

现在我遇到的麻烦是,如果自动完成开始搜索,它会启动Ajax请求,如果我在其中单击输入,则会启动另一个请求来执行重定向。但是这里有一个问题:第一个请求仍处于活动状态,如果在我的重定向完成之前它返回成功,它就会中止重定向,从而为我提供开始的页面。

现在最大的问题是:如何停止我一无所知的第一个请求? Blackbox明智的我不太了解这个请求,只是它很烦人。我不能通过JavaScript传递它,因为自动完成只有一个启动函数,它在请求之前加载,在完成之后在请求之后加载。

修改:以下是我需要了解的代码:

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>

2 个答案:

答案 0 :(得分:0)

我有同样的问题解决这个问题的最佳方法是这样的:

var ajaxObject = $.ajax( {your code here} );

提交时请执行以下操作:

ajaxObject.abort();

这会停止运行ajax脚本。

答案 1 :(得分:0)

如果用户按下enter,我认为你甚至不需要一个用于收听的功能...自动完成已经这样做...如果你想让search commandButton重定向到另一个页面,只需设置ajax attribute to false

<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;"/>