Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Edge v42+;中提取柱不工作;_Javascript_Post_Fetch - Fatal编程技术网

Javascript 在Edge v42+;中提取柱不工作;

Javascript 在Edge v42+;中提取柱不工作;,javascript,post,fetch,Javascript,Post,Fetch,我知道在这之后我会失去你们中的大多数人,但这个错误只发生在MS Edge的最新版本42.17134.1.0中。至少有一些旧版本可以正常工作(包括41.x) 我只是简单地使用fetchapi将登录凭据发布到服务器,但甚至从未进行过调用。Edge只是完全跳过了电话 这似乎不是一个获取问题,因为我尝试了jQuery和$post,其行为完全相同。这是代码,当然是假凭证。您会注意到,在其他浏览器(甚至IE)上,它都会返回错误的用户名/密码 document.getElementById("basicFet

我知道在这之后我会失去你们中的大多数人,但这个错误只发生在MS Edge的最新版本42.17134.1.0中。至少有一些旧版本可以正常工作(包括41.x)

我只是简单地使用fetchapi将登录凭据发布到服务器,但甚至从未进行过调用。Edge只是完全跳过了电话

这似乎不是一个获取问题,因为我尝试了jQuery和$post,其行为完全相同。这是代码,当然是假凭证。您会注意到,在其他浏览器(甚至IE)上,它都会返回错误的用户名/密码

document.getElementById("basicFetchButton").addEventListener("click", function(){
  return fetch('http://fldvd-apinet01.ad.nova.edu/appcentral/appcentral/auth/token', {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: 'grant_type=password&client_id=appcentral&username=user&password=test',
    method: 'POST'
  }).then((data) => {
    if (data.ok) {
      return data.json();
    }
    return data.json()
      .then((err) => {
        throw err;
      });
  });
});
这里是一个链接到


如果您有任何想法或建议,我们将不胜感激。

对不起,我来晚了。在使站点向后兼容Edge 41(EdgeHTML 16)和Safari 10时,我们遇到了本机Edge版本的
fetch
问题

我们的问题是,站点上存在cookie,并且与服务器上存储的内容相匹配,但是在我们的
获取
请求期间,一些cookie没有被传输。这真让人头痛。与您的问题不完全相同,但解决方案可能会对您有所帮助

其缺点是安装了一个
fetch
polyfill(源代码),并修改了执行polyfill时的条件

在这里读书使我产生了我的想法。dgraham建议在
if(self.fetch&&self.Headers.prototype.entries){

这对我不起作用,因为我的目标是仅在
1)
self.fetch
不存在。
2) 'self.fetch'确实存在,但它是Edge的EdgeHTML版本

我们如何判断存在
self.fetch
,但用户正在使用EdgeHTML版本进行查看?我发现的是Edge版本41.16299-44.18362(最新的EdgeHTML版本)执行
!!self.Headers.prototype.entries.prototype
true
。这是使用BrowserStack.com或VM Win10机器在Edge版本40、41、42、44上测试的

大多数其他浏览器以
false
的形式执行测试。以下是对此测试执行false的浏览器列表:

  • 铬v42
  • 铬v79
  • FF v44
  • FF v73
  • Safariv10.1
  • Safariv13.0
回到dgraham的GitHub帖子。一些浏览器确实有用于
获取
标题
,但是对于
!!self.Headers.prototype.entries
测试false。因此dgraham是正确的,我们需要对此进行测试。当
!!self.Headers.prototype.entries时,我发现测试的浏览器列表为
false
为:

  • Edge v40(EdgeHTML 15.15063)
  • FF v40
很抱歉这么冗长。这是我将
fetch
polyfill包装在其中的代码:

var loadPoly = false
if(!self.fetch){loadPoly = true}
if(!loadPoly && !self.Headers.prototype.entries){loadPoly = true}
if(!loadPoly && !!self.Headers.prototype.entries.prototype){loadPoly = true}
if(!!loadPoly){...

当您说它失败时,您收到的错误是什么?是您正在生成的后端错误还是特定于
fetch
和/或
ajax
?同样,它似乎完全跳过了调用。在开发控制台的“网络”选项卡中根本没有错误,也没有网络调用。您是否找到了导致此错误的原因或解决方案是@sn3ll吗?它似乎在更高版本(44)中对我有效,但我仍然有42上的用户在使用它。没有,甚至在edge开发者板上贴了一张罚单,也没有得到回应。我们只是建议用户升级到最新版本。典型的Microsoft