簡體   English   中英

Ajax函數不調用Servlet

[英]Ajax Function Not Calling Servlet

我正在從我的jsp調用Ajax javascript函數,這反過來應該加載servlet進行進一步處理。 我從jsp到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。

讓我知道是否可以提供其他方式以更好地可視化問題。 提前致謝。

嘗試調用目標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);}
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM