【问题标题】:How to click a link using ajax and jQuery如何使用 ajax 和 jQuery 单击链接
【发布时间】:2016-04-05 10:14:53
【问题描述】:

我有以下要求:

  • 如果由第三方服务正确生成,则需要下载文档。
  • 如果字节流不是 pdf 则抛出错误。
  • 为了达到同样的效果,我调用了触发文档生成的动作。如果文档生成成功,我想触发点击下面提到的链接。
  • 我这样做是因为如果我直接使用 href 链接,它需要一个带有 pdf 的响应,如果出现错误,它会呈现一个新页面或新选项卡。要求是在同一屏幕上显示错误而不重新加载。
  • 我在互联网上阅读了许多选项,它说如果没有两次独立调用服务器端,我无法在同一屏幕上呈现错误。
  • 因此,我需要单击由自定义标记生成的 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>

【问题讨论】:

  • $(a).trigger('click');应该足以点击锚点。

标签: javascript jquery ajax


【解决方案1】:

你可以使用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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多