如何使用ajax和jQuery单击链接

时间:2015-12-31 12:18:34

标签: javascript jquery ajax

我有以下要求:

  • 如果第三方服务正确生成,则需要下载文档。
  • 如果字节流不是pdf,则抛出错误。
  • 为了达到同样的目的,我调用动作来触发文档生成。我文件是成功生成的,我想触发点击下面提到的链接。
  • 我这样做是因为如果我直接使用href链接,则需要使用pdf返回Response,如果出现错误,则会呈现新页面或新选项卡。要求是在没有重新加载的情况下在同一屏幕上显示错误。
  • 我在互联网上阅读了很多选项,它说如果没有两次独立的服务器调用,我就无法在同一个屏幕上呈现错误。
  • 因此,我需要点击自定义标记生成的href链接,该标记会在呈现页面时生成href链接。

    <abs:resourceLink id="printQuoteResourceLink" action="downloadSaveQuote" label="#{msg.quotePrint}"/>

这会在加载页面时呈现href:

<a id="pb42583:pageform:printQuoteResourceLink" 
   name="pb42583:pageform:printQuoteResourceLink"
   href="/broker/broker/Home/Buy/ProductSimple?portal%3AwindowState=normal&amp;navigationalstate=JBPNS_rO0ABXceAAlleGVjdXRpb24AAAABAARlMXM0AAdfX0VPRl9f&amp;portal%3AcomponentId=8878e340-f05e-47d3-bdcb-42d29a6c62b3&amp;portal%3AcacheLevel=PAGE&amp;resourcestate=JBPNS_rO0ABXdyAA5zcHJpbmdSZXNvdXJjZQAAAAEAAAAMc3ByaW5nQWN0aW9uAAAAAQARZG93bmxvYWRTYXZlUXVvdGUABGRhdGUAAAABAA0xNDUxNTYzNTI2ODc0AAlleGVjdXRpb24AAAABAARlMXM0AAdfX0VPRl9f&amp;portal%3Atype=resource&amp;portal%3AportletMode=view">Print quote
</a><script type="text/javascript">
  • 点击按钮动作被调用,这将触发文档生成,我将文档存储在bean中。当响应回来时,我将检查bean中的值是否为真。如果是,我需要点击生成的链接。
  • 我可以使用ajax和jquery来实现这一目标。

我目前的代码:

<h:panelGroup id="panelPrintQuote">
   <div class="bordered button">
      <h:commandButton class="bordered button"  style="width: 154px;float:left;margin-left:640px !important; font-size:1em !important; 
            Padding: 0px 7px 0px 0px;" id="printQuoteCommandButton" value="#{msg.quotePrint}" action="generateSaveQuote" >
            <a4j:ajax render="panelPrintQuoteResource"/>
    </h:commandButton>
    <!--    <abs:resourceLink id="printQuote" action="downloadSaveQuote"
                        label="#{msg.quotePrint}" image="/resources/images/transparent_image.png"/> -->
    </div>
</h:panelGroup>
<h:panelGroup id="panelPrintQuoteResource" rendered="#{bnl_WebPageConfirmation.documentAvailable}">

   <abs:resourceLink id="printQuoteResourceLink" action="downloadSaveQuote"
        label="#{msg.quotePrint}" style="display:none;" image="/resources/images/transparent_image.png"/>

<h:outputScript>
 //<![CDATA[ 
   window.onload= $('a[href$="printQuoteResourceLink"]').click(function(){});
//]]>
 </h:outputScript>

1 个答案:

答案 0 :(得分:0)

您可以使用trigger('click'),因为元素已使用.click()

绑定
var a = $('a[href$="printQuoteResourceLink"]'); // cache the element for better performance
a.click(function(){
       a.trigger('click');
});

但你也使用

$('a[href$="printQuoteResourceLink"]')[0].click();

[0]将获取具有.click()函数

的DOM对象

另一种方法是使用.get(0)来获取DOM对象,与[0]

相同
$('a[href$="printQuoteResourceLink"]').get(0).click();