当前位置: 代码迷 >> JavaScript >> AJAX发布方法,有时在页面加载时触发,有时不触发
  详细解决方案

AJAX发布方法,有时在页面加载时触发,有时不触发

热度:115   发布时间:2023-06-07 13:46:14.0

我对AJAX有一个奇怪的问题,我在页面加载时使用AJAX POST方法返回了对象映射。

我正在调试过程,有时调用该方法,而Java Servlet运行,有时不运行。

我已经正确地包括了JS导入,其他jQuery调用也可以正常工作。

我尝试了不同的探险家。

我改用GET方法,但还是一样。

有人遇到过同样的问题吗? 谢谢

我的代码:

AJAX:

$(document).ready(function(){

// here there is another ajax servlet call, and it's working fine all time.

$.get("ServletName", function(responseJson) {      

//do some action

});
});

Servlet:

package packageName; //I keep it like that without a subfolder name that contains the servlets, doing so not to import the java classes located in the original package...would this be the problem?

@WebServlet(name = "ServletName", urlPatterns = {"/ServletName"})

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

Map<Integer, ClassName> objectsTree = new TreeMap<>();        
//adding objects to the map

    String mapString = new Gson().toJson(objectsTree);

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(mapString);
    }

我对我的文件位置有疑问,我的JSP文件位于“ root \\ web \\”下。我的selvlet位于root \\ src \\ java \\ packageName \\ servlets \\

但是还是。 所有servlet都被调用并且没有问题,但是只有这个调用不能一直实现...如果我一次又一次地运行调试器,它将在某些尝试下工作。

我想我发现了自己的错误,我的servlet位于Java类根目录之后的子文件夹中。 但是,我保留了与Java类根相同的servlet包声明,而不是在包声明中添加子文件夹名称。

package packageName;

应该是

package packageName.servlets;

唯一让我保持这种状态的东西,在很多方面看来都还不错,但最终我因此而遇到了问题。

我猜您的代码没有等待文档准备就绪。 但是,不看代码就很难知道。

  相关解决方案