servlet没有收到ajax

时间:2014-04-22 23:16:30

标签: java javascript jquery ajax servlets

我是jQuery和$ Ajax()的新手,但对Java EE非常熟悉,并完全坚持这一点。

我从firebug中的javascript控制台获得了一个js函数和信息,它向servlet发送请求 - 但是消息永远不会到达servlet。

当get或post到达servlet时,它将始终记录某些东西,但它在$ Ajax()“调用”时从不记录任何内容。

以下是fireBug的一些输出:

about to call ajax()<br>
showCID.jsp (line 12)<br>

    GET http://localhost:8080/RHY_Tools/AjaxServlet?id=123<br>

jquery....min.js (line 6)<br>
done with call to ajax()<br>
showCID.jsp (line 41)  Error:<br>
showCID.jsp (line 30)  Status: error<br>
showCID.jsp (line 31)  readyState <br>

服务器的日志中没有任何内容。

如果我粘贴

    http://localhost:8080/RHY_Tools/AjaxServlet?id=123 into the browser window the server log shows:

INFO: Id parameter is: 123<br>
INFO: done now.<br>

这是函数(上面的日志显示它被调用)

var myurl="AjaxServlet";
function checkCID(cid) {

console.log("about to call ajax()");

$.ajax({
    url:myurl ,
    data: {id: 123},
    type: "GET",

    success: function( resp ) {
        $( "" ).text( resp ).appendTo( "body" );
    },

    error: function( xhr, status, errorThrown ) {
        console.log( "Error: " + errorThrown );
        console.log( "Status: " + status );
        console.dir( xhr );
    },

    complete: function( xhr, status ) {
        alert( "The request is complete!" );
    }
});

console.log("done with call to ajax()");
}

3 个答案:

答案 0 :(得分:0)

一些建议:

  • 该网址不需要完整的主机(因为它是ajax,它默认为浏览器已连接到的内容)。您是否尝试过myurl =&#39; / RHY_Tools / AjaxServlet?id = 123&#39; ?
  • 从firebug检查网络流量面板,看看是否从客户端角度得到响应(404,500,200等),或者只是超时。这应该可以帮助您调试它实际到达的位置,如果有的话
  • 最后,这可能只是上面的帖子/ html中的拼写错误,但我看到网址有&#34;
    &#34;最后?

答案 1 :(得分:0)

这可能是由跨源脚本引起的。您的HTML和JavaScript位于何处?在与servlet相同的服务器上?在另一台服务器?或者在本地磁盘上?

如果在浏览器中直接从文件系统打开HTML文件,然后在脚本中尝试调用服务器,那么这就是问题所在。您的脚本尝试访问与脚本原点不同的服务器。

在这种情况下,浏览器通常会询问服务器是否接受来自其他来源的请求,以及服务器是否确认仅向服务器发送请求。 请参阅http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

解决方案替代方案:

  1. 将您的HTML和JavaScript放在与servlet相同的服务器上。

  2. 或者,在服务器上添加一个设置相应标头的处理程序。这将通知浏览器它将接受来自其他来源的请求。

答案 2 :(得分:0)

感谢您的建议。我问的是错误的问题所以你无法给出正确的答案。

这与调用$ Ajax()和servlet等无关。

这是因为我在HTML表单的文本字段中将该函数作为onChange()事件调用。我还没有理解导致这些症状的细节 - 不知何故,脚本运行完成但是Ajax失败了 - 但是如果我将完全相同的函数调用到完全相同的servlet - 但是在HTML表单中以不同的方式一切都很好。