gpt4 book ai didi

javascript - Ajax函数不调用Servlet

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:34 24 4
gpt4 key购买 nike

我正在从 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);}
}

关于javascript - Ajax函数不调用Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com