我在IP为*.*.*.37服务器上部署了一套单点系统,然后用户可以在单点系统上注册业务系统,每个业务系统都注册有可访问的URL以及访问的参数。用户注册的URL和参数在IE里访问都是没问题的,所以可以排除这个问题。页面上用户选择一个注册的业务系统后,系统应该根据该业务系统的URL自动跳转到该业务系统内。但现在遇到一个问题,如果注册的业务系统和单点登陆系统是同一个IP下的,也即*.*.*.37,是没问题的,可以进入业务系统内。但如果是其他的IP,则完全没反应。页面上的源代码如下:function Login(originalRequest) {
if(originalRequest != null) {
// ...
}
// 在目标系统上进行试探登录
var url = $F('loginSystemForm.loginUrl');
var pars = $F('loginSystemForm.loginParameters');
var method = $F('loginSystemForm.submitMethod');
pars = pars.replace(/%USERID%/g, $F('targetUserId')).replace(/%PASSWORD%/g, $F('targetPassword'));//问题就出在这里,如果不是和服务器同一个IP,则这条语句就不往下执行了。
var myAjax = new Ajax.Request(url, {method: method, parameters: pars, onComplete: LoginResponse, onFailure: LoginResponseFail});
}function LoginResponse(originalRequest) {
alert("LoginResponse");
var result = originalRequest.responseText;
alert("result = " + result);
var flag = $F('loginSystemForm.loginSuccessFlag');
if(result.indexOf(flag) != -1) { // 如果试探登录成功,保存帐号映射关系,并跳转到目标系统
$('loginResult').value = '登录成功!正在进入系统...';
SaveMapping();
} else { // 如果试探登录失败,提示登录失败,还在此页面
LoginResponseFail(originalRequest);
}
}function LoginResponseFail(originalRequest) {
alert("fail");
$('loginResult').innerHTML = '<B style="color: red;">登录失败!</B>'; var resultDetail = "登录信息不正确、或者系统不可访问。<BR/><BR/>" + escape(originalRequest.responseText);
$('loginResultDetail').innerHTML += '<div style="border:0px; position:absolute; overflow:scroll; overflow-x:hidden; width:100%; height:165px;" >' + resultDetail + '</div>'; // TODO $('loginResult').style.display = 'block';
$('toggleResultDetail').style.display = 'block';
}请各位大侠帮忙看一下,我不懂ajax,这个问题捆饶了我一个多星期了,再搞不定就该收拾东西回家了!!!谢谢了!!!

解决方案 »

  1.   

    看上去好象是ajax跨域的问题,好象没有什么太好的解决办法,我们是做了个servlet来转发数据的,lz可以在google上找找看看还有什么更好的办法没有。
      

  2.   

    问题已经解决,是IE设置的问题,由于ajax还属于比较先进的技术,IE目前默认设置不支持。所以必须要把该地址设为可信站点。