Ajax + servlet + unix失败

时间:2013-11-19 17:57:45

标签: jquery ajax unix servlets tomcat6

我开发了一个带有jQuery + ajax的jsp页面,用于向AdmitServlet提交数据。 它在我的localhost tomcat7中运行正常,但无法在unix tomcat6中运行。

jsp中的代码:

    $(document).ready(function() {           
        $('input[type=radio]').click(function() {
            var rateId = $("[name='rateId']").val();
            $.ajax({
              type:"Post",
              url: "http://127.0.0.1:8080/admission/AdmitServlet", 
              data: {action : $("[name='action']:checked").val() , rateId:rateId}, 
              success: function(data){
                $('#welcometext').text(data);
                },
        });
            });

这是Chrome的错误:

POST http://127.0.0.1:8080/admission/AdmitServlet  jquery-1.10.2.js:8706
sendjquery-1.10.2.js:8706
jQuery.extend.ajaxjquery-1.10.2.js:8136
(anonymous function)list_admit.jsp:49
jQuery.event.dispatchjquery-1.10.2.js:5095
elemData.handlejquery-1.10.2.js:4766

请帮助我,我对它完全感到困惑。

1 个答案:

答案 0 :(得分:0)

url: "http://127.0.0.1:8080/admission/AdmitServlet", 

您永远不应在客户端代码中的任何位置对基于localhost的域URL进行硬编码。当您在万维网上发布Web应用程序并且客户端(webbrowser)在与服务器不同的机器上运行时,这将不起作用。 http://127.0.0.1(和http://localhost)网址指的是当前计算机。因此,它试图击中运行在与JS代码运行的物理机器相同的服务器(webbrowser)。只有当webbrowser和webserver在物理上都在同一台机器上运行时才会起作用,就像在本地开发时一样。

至少使其成为域相对URL。

url: "/admission/AdmitServlet", 

硬编码的上下文路径/admission也是一个值得关注的问题,但不是当前的问题。你迟早会打它。