ajax兼容性的问题IE可以FirFox不行???

jxb_memory 2010-03-04 09:49:46
var xmlHttp=null;
function CreateXmlHttp()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}


}

function CheckCustomer()
{

// var value= escape(document.getElementById(mdiv).value);
// if(value!="")
// {
CreateXmlHttp();
var url="http://192.168.1.52:7777/rtdrpt001_data"+new Date().getTime();
try
{
xmlHttp.open("GET",url);
}
catch(d)
{
alert(d);
}
xmlHttp.onreadystatechange=function(){ShowCustomerBack(loaddiv)};
xmlHttp.send(null);
// }
}
如上代码在IE下open是可以连接到我的服务端,但是在FireFox下却跑出了异常,提示"Access to restricted URL denied",这是涉及到了跨域访问了吗?怎么解决???
...全文
210 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
melon92815 2010-09-28
  • 打赏
  • 举报
回复
你加什么了啊?
jxb_memory 2010-03-05
  • 打赏
  • 举报
回复
我的服务器返回的内容如下:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1183

FT11310: 827.7
......
可是服务器收到的就是空,谁知道为什么???
jxb_memory 2010-03-05
  • 打赏
  • 举报
回复
引用 16 楼 zjfei 的回复:
var xmlHttp;

try
    {
  // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
catch (e)
    {

  // Internet Explorer
  try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
  catch (e)
      {

      try
        {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
        alert("您的浏览器不支持AJAX!");
        return false;
        }
      }
    }
试试。

没用,试过了。我把FireFox升级了一下到3.6现在Socket连接可以建立了,但是收不到服务器返回的数,status等于0,按照网上说的0代表本地调用,没错。但是就是收到的内容为空???郁闷中......
饅頭 2010-03-05
  • 打赏
  • 举报
回复
var xmlHttp;

try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{

// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{

try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
试试。
jxb_memory 2010-03-05
  • 打赏
  • 举报
回复
1.问题一发现只是出现在使用FrontPage的预览时才出现,在IE浏览器下并不会跳转;
2.问题二则通过服务器发送document.getElementById这样的字符串可以实现数据更新,只是这样效率是在太低了,更新一个数据需要发送一个很长的字符串,能不能接收服务器传回的数据然后自己解析呢?
jxb_memory 2010-03-05
  • 打赏
  • 举报
回复
引用 12 楼 showbo 的回复:
实在不行你就写一个代理的页面,xhr对象请求此页面

此页面使用服务器端xhr对象加载http://192.168.1.52:7777/rtdrpt008_data的内容然后输出


其实你定时删除添加script对象也可以实现无刷新啊,如
HTML code<head></head><scripttype="text/javascript">function reloadJs(){var scr=document.createElement('script'),head=document.getElementsByTagName('head')[0],hScr=document.getElementById('data');
scr.type='text/javascript';
scr.src='http://192.168.1.52:7777/rtdrpt008_data?_dc='+new Date().getTime();
scr.id='data';if(hScr)head.removeChild(hScr);
head.appendChild(scr);
setTimeout(function(){reloadJs();},3000);//3s后再次加载,要改更新间隔时间修改此处}
reloadJs();//第一次加载script</script>

此方法确实可以在IE和FireFox下都实现Socket连接,但是有两个问题:
1.IE下会出现界面跳转问题,这是不可以的,但在FireFox下却没有?
2.数据发送到服务器去了,但是我怎么接收服务器传回的数据?
jxb_memory 2010-03-05
  • 打赏
  • 举报
回复
问题解决了,其实就是简单的添加一句话而已,为什么没人知道啊!!!
yongxinai 2010-03-05
  • 打赏
  • 举报
回复
楼主如果你用纯JS写的话需要首先判断下浏览器的版本是IE 或者FF 或者什么的
用js框架可以避免浏览器不兼容问题Jquery 或 Extjs什么都都行
IE下运行成功 FF下不运行这是我也遇到过的问题
Go 旅城通票 2010-03-04
  • 打赏
  • 举报
回复
你地址栏的内容是什么?

端口号是服务器软件如iis,tomcat等设置,浏览器不需要设置端口号。

可以看看这篇文章
FireFox下端口不一致导致跨域
jxb_memory 2010-03-04
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
你浏览器上的url地址的端口号也是7777没有??

在ff下如果端口号不一样也算跨域的

在那里能设置端口号呢?我的IE也没有设置啊?
Go 旅城通票 2010-03-04
  • 打赏
  • 举报
回复
你浏览器上的url地址的端口号也是7777没有??

在ff下如果端口号不一样也算跨域的
PHSong2008 2010-03-04
  • 打赏
  • 举报
回复
Extjs QQ在线交流讨论群
QQ群号:37198010
欢迎大家加入!
后台程序语言不限,本人主要以JAVA为主.呵呵
并且招募高手当群主,成为群领!!
jxb_memory 2010-03-04
  • 打赏
  • 举报
回复
引用 1 楼 mrshelly 的回复:
你IE访问 地址是什么? FireFox 下访问地址是什么?

代码中已经给出了访问地址:
var url="http://192.168.1.52:7777/rtdrpt001_data"+new Date().getTime();
mrshelly 2010-03-04
  • 打赏
  • 举报
回复
你IE访问 地址是什么? FireFox 下访问地址是什么?
Go 旅城通票 2010-03-04
  • 打赏
  • 举报
回复
实在不行你就写一个代理的页面,xhr对象请求此页面

此页面使用服务器端xhr对象加载http://192.168.1.52:7777/rtdrpt008_data的内容然后输出


其实你定时删除添加script对象也可以实现无刷新啊,如
<head></head>
<script type="text/javascript">
function reloadJs(){
var scr=document.createElement('script'),head=document.getElementsByTagName('head')[0],hScr=document.getElementById('data');
scr.type='text/javascript';
scr.src='http://192.168.1.52:7777/rtdrpt008_data?_dc='+new Date().getTime();
scr.id='data';
if(hScr)head.removeChild(hScr);
head.appendChild(scr);
setTimeout(function(){reloadJs();},3000); //3s后再次加载,要改更新间隔时间修改此处
}
reloadJs();//第一次加载script
</script>
jxb_memory 2010-03-04
  • 打赏
  • 举报
回复
我以前使用框架刷新的方式
<html>

<head> <META HTTP-EQUIV="Refresh" CONTENT="1"> <base target="main"> </head>

<body>

<script language="javascript" src="http://192.168.1.52:7777/rtdrpt008_data">

</script>

</body>

</html>
这种在IE和FireFox中都好使,不足就是界面总是在刷新,所以想改成Ajax,但是没想到在FireFox下不好使,在局域网中可以直接执行HTML文件和VC程序建立连接不需要通过Apache的,所以我感觉我的问题不在跨域访问上,不知道问题出在哪里???
jxb_memory 2010-03-04
  • 打赏
  • 举报
回复
引用 9 楼 showbo 的回复:
引用 7 楼 jxb_memory 的回复:还是没整明白,我其实就是在服务器上有一个程序开了个7777端口监听,然后想通过Ajax与服务器上的程序通信,可是在FireFox下就是没反应,这和跨端口有什么关系???希望哪位达人能把我的代码改一下啊!!!
ajax和浏览器工作原理一样,浏览器不能和程序直接交互啊。 你的问题视乎不是ajax跨域的问题了。。

那你浏览器能直接访问http://192.168.1.52:7777/rtdrpt001_data吗?

应该是在你的站点下建立一个页面,用此页面和程序交互,然后获取数据后使用输出对象将程序返回的信息输出到客户端。

我的结构是这样的,在服务端有apache,和我的一个VC写的服务程序开了一个7777的端口用来传输数据,其实如果直接双击我写的HTML文件就可以直接和我的VC程序建立连接,就是调用的open和send,在IE6中没有问题,但是在FireFox中就不行了,Socke监听一点反应都没有???
Go 旅城通票 2010-03-04
  • 打赏
  • 举报
回复
引用 7 楼 jxb_memory 的回复:
还是没整明白,我其实就是在服务器上有一个程序开了个7777端口监听,然后想通过Ajax与服务器上的程序通信,可是在FireFox下就是没反应,这和跨端口有什么关系???希望哪位达人能把我的代码改一下啊!!!

ajax和浏览器工作原理一样,浏览器不能和程序直接交互啊。 你的问题视乎不是ajax跨域的问题了。。

那你浏览器能直接访问http://192.168.1.52:7777/rtdrpt001_data吗?

应该是在你的站点下建立一个页面,用此页面和程序交互,然后获取数据后使用输出对象将程序返回的信息输出到客户端。
孟子E章 2010-03-04
  • 打赏
  • 举报
回复
firefox下跨域的情况已经有解决方法来,参考
http://dotnet.aspx.cc/article/5332ae5c-d9a2-43b8-987d-26223f78119f/read.aspx
系列文章
jxb_memory 2010-03-04
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
你地址栏的内容是什么?

端口号是服务器软件如iis,tomcat等设置,浏览器不需要设置端口号。

可以看看这篇文章
FireFox下端口不一致导致跨域

还是没整明白,我其实就是在服务器上有一个程序开了个7777端口监听,然后想通过Ajax与服务器上的程序通信,可是在FireFox下就是没反应,这和跨端口有什么关系???希望哪位达人能把我的代码改一下啊!!!

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧