如何从Sling读取数据到Jquery?

问题描述:

作为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) { 
     } 
    } 
} 

您需要重构你的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 –