0

我在使用 servlet 会话属性和 JQuery 显示 div 时遇到问题。请耐心等待,因为没有上下文很难解释。

我有一个“result.jsp”页面。在 jsp 中,我有一个“生成 URL”链接、一个空输入文本字段和一个“addThis”div。链接“生成 URL”调用 jquery ajax 方法“utilComp()”,该方法调用设置会话属性“saveLink”的 servlet,返回一个值并填充空文本字段。

如果属性会话“saveLink”为空(因为尚未单击生成 URL),则需要在加载 result.jsp 时隐藏 div。我通过使用 if test="${not empty saveLink}" 来做到这一点,并且 div 被隐藏了。

我的问题是把它带回来。我希望在完成 ajax utilComp() 并且始终设置属性 saveLink 后显示“addThis”div。任何人都知道我该如何做到这一点?任何帮助或想法将不胜感激。

这是只显示重要片段的 RESULT.JSP

<script type="text/javascript">
    function utilComp()     {
        var jqXHR = $.ajax({
            type: "POST",
            url: "http://www.central.com/sharemake.do",
            async: false,
            global: false,
            done: function(response){
        return response;
         },
         fail: function(e){
            alert('Error: ' + e);
         }
    }).responseText;    

    $('#savelink_id').val(  jqXHR    );
</script>

<a href="javascript:utilComp()"> Generate Link </a> 

<input type="text" name="savelink_name" id="savelink_id" value="<c:out value="${saveLink}" />" />

<div class="addthis_toolbox addthis_default_style">
   <a class="addthis_button_gmail" addthis:url="<c:out value="${saveLink}"/>" </a>
</div>

这是 utilComp() 调用的 servlet 代码

String addressID = "http://www.central.com/generate"
session.setAttribute("saveLink", addressID);
String resultToReturntoAjax = addressID ;

PrintWriter out = response.getWriter();
response.setContentType("text/text;charset=utf-8");
response.setHeader("cache-control", "no-cache");
out.println(resultToReturntoAjax);
4

1 回答 1

1

我不是 jQuery 专家,但我认为您可以通过调用使 div 可见:$('addthis_toolbox_addthis_default_style').show(). 这应该使所有控件都具有一个类addthis_toolbox_addthis_default_style并使它们可见。(我假设您的 div 是该类的唯一控件;如果这不是真的,您需要给它一个 ID 并针对 ID 而不是类做一个选择器。)

因此,您可以根据是否在 JSP 运行时(加载页面时)设置会话变量来设置 JSP 中 div 的初始可见性,然后在您的 Ajax 功能完成时,使用 jQuery 设置 div 可见如果它尚不可见,则在客户端。

于 2013-08-11T21:08:58.173 回答