【问题标题】:Ajax+servlet+unix failedAjax+servlet+unix 失败
【发布时间】:2013-11-19 17:57:44
【问题描述】:

我用jQuery + ajax 开发了一个jsp 页面来提交数据给AdmitServlet。 它在我的本地主机 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

请帮帮我,我对此一头雾水。

【问题讨论】:

  • 您在 Chrome 开发工具中究竟从哪里获得此输出?这看起来不像我见过的任何错误。
  • @thatidiotguy:这是一个 JS 堆栈跟踪。当您在控制台中展开 JS 错误消息时,您会看到这一点。它类似于 Java 堆栈跟踪。不幸的是,OP 忘记复制粘贴实际的 JS 错误消息本身。
  • @BalusC 我只是说应该有一条错误消息。

标签: jquery ajax unix servlets tomcat6


【解决方案1】:
url: "http://127.0.0.1:8080/admission/AdmitServlet", 

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

改为至少使其成为域相对 URL。

url: "/admission/AdmitServlet", 

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

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2014-10-20
    • 2022-11-03
    • 2022-01-01
    相关资源
    最近更新 更多