我正在尝试为我们的网络服务编写一个简单的“概念证明”前端。webservice 是一个 java webapp,返回在 tomcat 中运行的简单 xml。前端由带有一些 jquery 函数的简单 html 页面组成。我正在本地机器上开发页面,而 web 服务在我们的一台服务器上运行。
基本上这就是我所做的:
var url = "http://ourserver.com:51088/service/action/?param=123";
$.get(url,function(data,status) {
alert("Data: " + data + "\nStatus: " + status);
});
当我将 url 放在 Firefox 地址栏中时,我得到了生成的 xml。
当我运行 jquery 代码时,Firebug 显示生成的 xml,但警报从未显示。
考虑到这可能是一个跨浏览器脚本问题,我编写了一个小 node.js 代理服务器,它将任何 localhost:51088/path 传递给 ourserver.com:51088/path。所以我将url
var 更改为
var url = "http://localhost:51088/service/action/?param=123";
同样,在浏览器中测试这个 url 会生成 xml。所以 node.js 代理服务器工作正常。
当我在 Firebug 中运行 jquery 代码时,我现在一直得到Reload the page to get source for: http://localhost:51088/.....
我现在很茫然。
更新:阅读更多后,我将 jquery 代码更改为:
$.ajax( {
type: "GET",
contentType: "application/xml",
url: url,
datatype: "text xml",
xhrFields: {
withCredentials: true
},
succes: function(xml) { alert(xml) },
error: function(obj, status, err) { alert ("error\nstatus: " + status + "\nerr: " + err)}
});
现在,我使用远程 url 还是本地 url 都没有关系。两者都在控制台日志中返回 xml,但仍然没有调用成功函数。