我有两台服务器:服务器A和服务器B.
服务器A是一个中央服务器,其Web服务可以调用服务器B上的某些Web服务,执行一些额外的工作并返回所需的结果。
服务器B(OpenText Content Server)上有一些自定义javascript,可执行以下操作:
在加载时,进行AJAX POST以获得"表格"显示。表单以HTML格式返回,并在成功发生时呈现在页面上。这是代码:
function load(ID)
{
$.ajax({
type:"POST",
url:[REMOVED],
data:"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><LoadForm xmlns='http://tempuri.org/'><ID>" + ID + "</ID></LoadForm></soap:Body></soap:Envelope>",
contentType:"text/xml",
success: render });
}
function render(data, status, jqHXR)
{
$(fc)[0].innerHTML = data.documentElement.getElementsByTagName("LoadFormResult")[0].textContent;
}
加载页面时,上面的请求可以正常运行并将HTML呈现到页面上。该内容包括一个按钮,按下该按钮会触发另一个AJAX请求。
我尝试了多种不同的重定向方式... location.path,location.href,location.replace,location,history.push,并且都经历了相同的行为。
我也尝试了重定向,而不是完成,甚至重定向到谷歌。
以下是代码:
$.ajax({
type:"POST",
url:[REMOVED],
data:"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><CreateFolder xmlns='http://tempuri.org/'><parentID>" + parentID + "</parentID><folderDisplayName>" + folderDisplay + "</folderDisplayName><ID>" + ID + "</ID><Info>" + InfoStr + "</Info><inherit>" + inherit + "</inherit><username>" + currUser + "</username></CreateFolder></soap:Body></soap:Envelope>",
contentType:"text/xml",
success: goToFolder,
error: function(d,s,j) { alert("failed"); },
complete: function(d,t) { location.replace('[REMOVED]'); }
});
当我在IE中使用fiddler和网络监视器进行监视时,我看到以下行为:
如果我在导致问题的AJAX请求结束时发出警报,并等待该警报阻止脚本;我看到成功/完成调用函数(适当地将页面重定向到所需位置)
非常感谢任何协助。
编辑:其他信息:
当点击执行AJAX请求的页面上的按钮时,以下内容显示在Fiddler中。
选项http://mywebservice/ws/service?op=myOperation HTTP / 1.1 *返回STATUS 200 OK 获取http://contentserver/otcs/cs.exe *返回STATS 302重定向(文档已移动) POST http://mywebservice/ws/service?op=myOpertaion HTTP / 1.1 *返回STATUS 200
由于AJAX在POST回来之前不会响应成功/完成,因此JavaScript不会执行。警报必须阻止发生GET请求。不知道GET请求来自哪里。
谢谢!