2015-07-22 86 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);} 
    }