2017-02-13 84 views
1

作爲AEM用戶界面開發的一部分,我寫了一個Sling Servlet和Jquery。我需要觸發Servlet使用Jquery和從Servlet讀取數據到JQuery中?任何幫助?如何從Sling讀取數據到Jquery?

我的Jquery:

window.location.href = Granite.HTTP.externalize("/bin/dam/TimelineVersion"); 

var val=""; // Here I need to Read String Data from Servlet 
alert(val); 

我的吊帶的Servlet:

@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true) 
@Properties({ 
     @Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false), 
     @Property(name = "service.vendor", value = "HPE", propertyPrivate = false) }) 
public class TimelineVersion extends SlingSafeMethodsServlet{ 

    @Reference 
    private SlingRepository repository; 

    public void bindRepository(SlingRepository repository) { 
     this.repository = repository; 
    } 

    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { 

     try { 
      String Data="This value i have to get in Jquery"; 
     } catch (Exception e) { 
     } 
    } 
} 

回答

1

您需要重構你的servlet來實際寫出來的響應(我建議你JSON發送到瀏覽器):

@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true) 
@Properties({ 
     @Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false), 
     @Property(name = "service.vendor", value = "HPE", propertyPrivate = false) }) 
public class TimelineVersionServlet extends SlingSafeMethodsServlet { 

    @Reference 
    private SlingRepository repository; 

    private static Logger log = LoggerFactory.getLogger(TimelineVersionServlet.class); 

    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { 
     try { 
      String data = "This value i have to get in Jquery"; 
      response.getWriter().write(data); 
     } catch (Exception e) { 
      log.error(e); // handle appropriately 
     } 
    } 
} 

以下爲您的Javascript:

$.get('/bin/dam/TimelineVersion') 
    .success(function(data) { 
     console.log(data); 
    }) 
    .error(function() { 
     console.log('[ERROR] Could not perform request'); 
    }); 

下面是使用jQuery稱爲吊帶的Servlet的工作示例:https://github.com/mickleroy/aem-ajax-search

+0

感謝:-)其工作,有沒有辦法得到jQuery的價值Servlet的? –

+0

@AsnaRaheem如果此答案解決了您的問題,請考慮接受它(將答案標記爲已接受,請單擊答案旁邊的複選標記以將其從灰色變爲填充) – mickleroy

+0

$ .get('/ bin/dam/TimelineVersion')以及這個我需要傳遞一個值給Servlet –