XMLHttpRequest().Open 在 Firefox 中不是函数,但在 Chrome 中有效

Posted

技术标签:

【中文标题】XMLHttpRequest().Open 在 Firefox 中不是函数,但在 Chrome 中有效【英文标题】:XMLHttpRequest().Open is not a function in Firefox, but it works in Chrome 【发布时间】:2016-04-15 12:51:28 【问题描述】:

我有下面的函数,但是当我尝试在 Firefox 中运行它时,我收到错误“xmlhttp.Open 不是函数”。但是,这在 Google Chrome 中不会发生

我是否遗漏了一些从 ActiveXObject 转换的代码? PAGE 参数已设置并适用于 Internet Explorer 中的 ActiveXObject

function broker(PAGE, PARAMARR, STARTPARAM) 
  var postdata = getPostData();
  var ua = navigator.userAgent;
  var msie = ua.indexOf('MSIE ');
  //var xmlhttp =null;
  if (msie != -1) 
    xmlhttp = new ActiveXObject('MSXML2.XMLHTTP');
    xmlhttp.Open('POST', PAGE, false);
    xmlhttp.setRequestHeader(
      'Content-Type',
      'application/x-www-form-urlencoded; charset=UTF-8'
    );
   else 
    xmlhttp = new XMLHttpRequest();
    xmlhttp.Open('POST', PAGE, false);
    xmlhttp.setRequestHeader(
      'Content-Type',
      'application/x-www-form-urlencoded; charset=UTF-8'
    );
  
  var paramno, param;
  for (paramno = STARTPARAM; paramno < PARAMARR.length; paramno++) 
    param = PARAMARR[paramno];
    if (param == void 0) param = '';
    if (param === true) param = -1;
    if (param === false) param = 0;
    postdata = postdata + '&Parameter=' + encodeURIComponent(param);
  
  xmlhttp.setRequestHeader('Content-Length', postdata.length);
  xmlhttp.send(postdata);
  var response = new String(xmlhttp.responseText);
  var brkmsg = getMessage(response);
  return brkmsg;

Chrome:Netscape mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/47.0.2526.106 safari/537.36

Firefox: Netscape mozilla/5.0 (windows nt 6.1; wow64; rv:43.0) gecko/20100101 firefox/43.0

IE11:Netscape mozilla/5.0(windows nt 6.1;wow64;trident/7.0;slcc2;.net clr 2.0.50727;.net clr 3.5.30729;.net clr 3.0.30729;媒体中心 pc 6.0;.net4 .0c; .net4.0e; infopath.3; rv:11.0) 像壁虎)

IE8(兼容模式):Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.2;WOW64;Trident/4.0;.NET CLR 3.0.4506.2152;.NET CLR 2.0.50727;.NET CLR 3.5.30729;. NET4.0C;.NET4.0E;InfoPath.2)

【问题讨论】:

【参考方案1】:

好像是笔误。用小写写“open”!

【讨论】:

以上是关于XMLHttpRequest().Open 在 Firefox 中不是函数,但在 Chrome 中有效的主要内容,如果未能解决你的问题,请参考以下文章

xmlHttpRequest.open 和 xmlHttp.open 有啥不同

为啥在xmlHttpRequest的open方法中使用参数true,却还是否异步啊?

为啥 xmlHttpRequest.Open 仅在我输入字符串时才起作用?

Cordova Async XMLHttpRequest().open 在 Android 中不起作用

javascript XMLHttpRequest 对象的open() 方法参数说明

Ajax XMLHttpRequest对象的三个属性以及open和send方法