2015-07-22 92 views
1

我从我的jsp调用了一个Ajax的javascript函数,它反过来应该加载一个servlet进行进一步处理。我从jsp获取值到ajax,但是servlet没有被调用。在网上查找&后,我找不到缺失的链接。Ajax函数不调用Servlet

这是我的jsp我在哪里调用AJAX javascript函数:

<display:column title="Merge Print"><a href="#" onClick="printMerge('arg1', 'arg2')">Click Here</a></display:column> 

在一个单独的文件ajax.js,我有以下代码:

function printMerge(arg1, arg2) { 
alert('In printMerge '+arg1, arg2); 
new Ajax.Request('servlet/PrintMerge', { 
    method: 'post', 
    parameters: { arg1: arg1.value, arg2: arg2.value }, 
onSuccess: function(transport) { 
    var response = transport.responseText || "no response text"; 
    if(response =='success') { 
      alert('RESPONSE: SUCCESS'); 
      reloadPage(); 
    } else { 
      alert('RESPONSE: ERROR'); 
    }, 
onFailure: function() { alert('FAILURE'); } 
}); 
} 

在第一次警报,这两个参数显示正确。因此,jsp正确地调用该函数,并且参数正常传递。然而,这个过程在那里停止,并且它永远不会进入'PrintMerge'servlet进行进一步处理。

这里是PrintMerge的servlet:

public class PrintMerge extends HttpServlet { 
    private static final long serialVersionUID = 1L 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doPost(request, response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String resp = serviceCall; 
     response.getWriter().write(resp); 
    } 
} 

这里是我的web.xml:

<servlet> 
    <servlet-name>PrintMerge</servlet-name> 
    <servlet-class>com.servlet.PrintMerge</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>PrintMerge</servlet-name> 
    <url-pattern>/servlet/PrintMerge</url-pattern> 
</servlet-mapping> 

类似的配置正在为其他场景。但是,我觉得我缺少一些东西,因为ajax函数没有访问servlet。

让我知道是否可以提供更好的可视化问题。提前致谢。

+0

控制台中的错误?请求是否被删除?它在网络标签中显示什么? – epascarello

+0

控制台没有错误。当我尝试调试时,它没有到达servlet。 –

+0

那么网络选项卡显示什么?请求是否出去?错误处理程序是否被触发?你看过这个方法的论点,看看他们说了什么吗? – epascarello

回答

0

试用调用对象的servlet,而不是servlet/PrintMerge的全限定名,并有另一种尝试,如http://[::1]/my_ctx/servlet/PrintMerge

在某些情况下,你需要指定响应内容类型与servlet的响应,如以下。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/plain;charset=UTF-8"); 
     //String resp = serviceCall; 
     try(PrintWriter out=response.getWriter()){out.write(serviceCall);} 
    }