我开发了一个带有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
请帮助我,我对它完全感到困惑。
答案 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
也是一个值得关注的问题,但不是当前的问题。你迟早会打它。