jQuery ajax调用出现“未找到”错误

8

你好,我一直在尝试向JSP页面发起ajax请求。以下是JS函数的片段:

<script>
$(function(){

  function myAjaxCall() {
     $.ajax({
        type: "post",
        url: "jsp/common/myJavascriptPage.jsp",
        dataType: "text",
        success: 
            function (result) {
               alert("Got the result: " + result);
            },
            error: function (xhr,status,error) {
               alert("Status: " + status);
               alert("Error: " + error);
               alert("xhr: " + xhr.readyState);
            },
            statusCode: {
               404: function() {
                   alert("page not found");
               }
            }
        });
   }
 });
 </script>

我不断收到“文件未找到”的提示,即使JSP在URL中存在。请注意,我正在相对于webapp目录计算JSP文件位置。

我尝试使用普通的AJAX调用(没有jQuery),但结果仍然是相同的错误。

能否请您帮助我理解为什么无法定位jsp文件?


首先,jsp/common/myJavascriptPage.jsp 返回什么? - TNC
你能否尝试在调用中将 url 更改为 "/jsp/common/myJavascriptPage.jsp" - MilkyWayJoe
我只是返回一段文本。其中嵌入了Java代码。我使用response.getWriter().println(myResponse); - Leo
@MilkyWayJoe 刚刚尝试了一下,没有成功。 - Leo
3个回答

14
请注意,我正在根据webapp目录的位置计算JSP文件位置。
你走错了方向。
AJAX是在客户端的Web浏览器中执行的,这意味着它与服务器上的任何内容都没有关联。
如果您在Web浏览器中访问该页面,您会去哪里?
那就是您想要的请求URL所在的位置。
编辑:显然我没有解释清楚,我们再来一次吧!
假设我在服务器上有一个文件,存储方式如下:
my_website/src/webapp/jsp/common/myFile.jsp 如果我想通过公共可访问的URL访问此资源,它将与上述文件路径不同。它可能是“common/myFile.jsp”或甚至是“common/myFile”。
如果是这种情况,则必须使用公共可访问的URL才能发送AJAX请求到该URL。

1
我需要留在同一个页面上。JSP页面中嵌入了Java代码,该代码返回一段文本,需要在index.jsp文件中进行更新。 - Leo
没问题!AJAX最简单的解释就是你在发起一个HTTP请求,而不需要担心它何时返回。这与在浏览器中访问网页没有什么区别。当请求被发送时,你将不会被重定向到那个页面或其他任何地方。 - Ian Bishop
好的。所以URL必须保持为“index.jsp”。如果是这样,那么我该如何调用JSP页面来检索其响应? - Leo
对此仍不是很清楚。如果我想要加载其他页面,为什么需要使用Ajax呢?而且,就连jQuery Ajax API网站上的示例似乎也没有在URL中包含域名。点击查看 - Leo
感谢你的帮助,Ian。现在我明白了。:)虽然这并没有解决我的问题。我会将嵌入式Java代码移动到一个servlet中(我想这是一种更清晰的方式)。再次感谢。 - Leo
显示剩余2条评论

2

看起来你的URL不完整。错误的最可能原因是你没有一个完全合格的URL。

尝试指定完整路径,看看是否有帮助。


0
请检查以下两个点有关“页面未找到”错误。我也遇到了同样的问题。我的情况是调用 JSON 文件来加载数据。在纠正以下更正之后,它开始正常工作。
(1) 文件路径 (URL) 应相对于脚本执行的当前页面。 (2) 在 IIS 服务器中添加 .json (text/plain) MIME 扩展名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接