标签: xmlhttprequest

我可以一次性将 Ajax requestXML 对象追加到我的文档树中吗?

问候。这是我的服务器在responseXML对象中返回的XML对象:

<tableRoot>
   <table>
      <caption>howdy!</caption>
      <tr>
         <td>hello</td>
         <td>world</td>
      </tr>
      <tr>
         <td>another</td>
         <td>line</td>
      </tr>
   </table>
Run Code Online (Sandbox Code Playgroud)

现在我将此片段附加到我的文档树中,如下所示:

getElementById('entryPoint').appendChild(responseXML.firstChild.firstChild);

但我没有呈现为表格,而是得到以下文本

你好!你好世界另一条线

我仅用firstChild 替换firstChild.firstChild 会发生相同的结果。看起来我刚刚获取了节点值,所有标签都被删除了?!我是否从根本上误解了responseXML对象应该代表什么?顺便说一句,如果我取出“root”标签,并将innerHTML 设置为responseText,那么这是有效的。
有人可以告诉我使用responseXML 的正确方法吗?

dom xmlhttprequest

2
推荐指数
1
解决办法
868
查看次数

ajax获取xmlHttpRequest加载时间

有没有办法获得 xmlHttpRequest 加载时间?

否则我必须设置一个函数来计算它,所以呢?

ajax xmlhttprequest load-time

2
推荐指数
1
解决办法
3444
查看次数

javascript 替换 &lt; 与 &lt; 产生 $lt;?

我正在尝试使用 javascript 替换函数将 html 实体 < 转换为 < ,就像这样

text = text.replace(/&lt;/g, "<");
text = text.replace(/&gt;/g, ">");
Run Code Online (Sandbox Code Playgroud)

初始文本看起来像这样:

&lt;img /&gt;
Run Code Online (Sandbox Code Playgroud)

我试图让它看起来像这样:

<img />
Run Code Online (Sandbox Code Playgroud)

但是,当我运行上面的代码时,我得到......:

$lt;img />
Run Code Online (Sandbox Code Playgroud)

有趣的是,替换 > 符号效果很好,但是替换 < 符号会产生完全意想不到的结果(那个 $ 符号到底是从哪里来的???)。

我还应该指出,如果我在替换函数中的 < 之前添加一个空格,如下所示:

text = text.replace(/&lt;/g, "< ");
Run Code Online (Sandbox Code Playgroud)

它产生这个:

< img />
Run Code Online (Sandbox Code Playgroud)

不幸的是,它并没有像我想要的那样被解析为 HTML...

编辑:如果有帮助的话,我正在执行此操作的文本是 XMLHttpRequest 的responseText。

javascript replace xmlhttprequest

2
推荐指数
1
解决办法
3743
查看次数

Wildfly 允许 OPTIONS 方法但返回 405 不允许方法

POST我正在尝试使用 javascript 中的方法发送 xmlXmlHttpRequest object. On my server I've a web service which receives SOAP request.

OPTIONS当我想发送 xml 时,浏览器之前尝试向服务器发送预检请求,但它返回OPTIONS 405 Method Not Allowed.

问题是我的响应标头中有,Access-Control-Method-Allowed : POST,OPTIONS,GET,PUT所以我猜我的服务器接受 OPTIONS 方法,但我的 Web 服务只理解POST请求。

这是一些代码:

 var xmlhttp = new XMLHttpRequest();
 xmlhttp.open('POST', url, false);
 var sr = mySoapRequest; //Here's my XML 

 xmlhttp.onreadystatechange =  () => {
     if (xmlhttp.readyState == 4) {
         if (xmlhttp.status == 200) {                           
             var xml = xmlhttp.responseXML;
             console.log(xml);
             this.showAlert(xml);
         }
     }
 }
 xmlhttp.setRequestHeader("content-type", …
Run Code Online (Sandbox Code Playgroud)

javascript soap xmlhttprequest cors wildfly

2
推荐指数
1
解决办法
6081
查看次数

将 JSON 数据上传为文件

我有一个对象(数据),我需要将其转换为 JSON 并将其上传到 CDN。我计划使用JSON.stringify()并传递 javascript 对象

它可以完美地从浏览器将文件上传到 CDN,我想知道如何模拟 FormData

我用来上传文件到CDN的代码是:(作为示例)

const data = new FormData();
data.append('signature', auth.signature);
data.append('key', auth.id);
data.append('policy', auth.policy);
data.append('GoogleAccessId', auth.serviceAccount);
data.append('bucket', 'assets-visualive');
data.append('file', file);
Run Code Online (Sandbox Code Playgroud)

javascript json file-upload xmlhttprequest google-cloud-storage

2
推荐指数
1
解决办法
2102
查看次数

在 axios 中检测 xhr.status === 0

语境

我有一个在企业环境中运行的网络应用程序,其中所有请求都通过我无法控制的代理。该层会根据需要自动将我的用户重定向到不同域上的单点登录页面。

这是基本顺序:

  1. myapp.example.corp用户在浏览器中输入
  2. 请求通过代理,该代理检查用户是否已登录
  3. 用户尚未登录,因此他们被重定向到登录地址auth.example.corp
  4. 用户登录,然后重定向到我的应用程序

到目前为止,一切都很好。

问题

我想问的问题出现在以下场景中:

  1. 用户在我的应用程序中执行一些操作,然后回家,使浏览器选项卡保持打开状态
  2. 经过一定时间后,用户的会话过期
  3. 用户返回浏览器选项卡,我的应用程序已打开并继续使用它
  4. 我的应用程序发出 AJAX 请求,并且它们通过相同的代理
  5. 由于用户不再登录,这些请求将被重定向到登录页面
  6. 由于该登录页面位于不同的域中,因此以下内容将记录到浏览器控制台,这对于了解正在发生的情况非常有用
Failed to load https://auth.example.corp: No 'Access-Control-Allow-Origin'
header is present on the requested resource. Origin 'https://myapp.example.corp'
is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

(这个问题与CORS无关。我无法控制代理或身份验证服务器。请不要分心。)

真正的问题是,在我使用 axios 的应用程序代码中,传递给 axios 的回调永远不会被调用。此请求的承诺永远不会得到解决或拒绝。我在代码中检测不到任何事情发生。

// none of these callbacks get called
axios
  .get("/signedin")
  .then(response => console.log("Signed in"))
  .catch(response => console.log("Not signed in"))
Run Code Online (Sandbox Code Playgroud)

解决方法

如果我改用XMLHttpRequestAPI,我就能够检测到这种情况,因为onreadystatechange事件触发了,我可以测试request.status === 0.

var request = new XMLHttpRequest();
request.onreadystatechange …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest axios

2
推荐指数
1
解决办法
5723
查看次数

Angular 6 - HTTP 拦截器和网络 :: ERR_TIMED_OUT

我的问题是关于最近我一直摸不着头脑的事情——

在我的拦截器中,我有一些代码可以解析和处理某些错误,并将根据错误的状态代码等以某些方式执行操作(我没有包含此代码,因为它实际上对这个问题没有任何作用,但如果有人有充分的理由为什么我应该包括它,我绝对可以。

我试图弄清楚如何net :: ERR_TIMED_OUT在拦截器中处理(使用谷歌浏览器/歌剧)。我已经追踪到一个点,我可以知道请求正在构建并正在“处理”,但在那之后,请求和响应都消失了。我最初的想法是,XMLHttpRequest某个地方出现了错误,并且它以某种方式被抑制,并且响应被丢弃。

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const intercepted = this.setHeaders(req);
    return this.SetPendingRequests(next.handle(intercepted))
            .pipe(catchError((err): Observable<HttpEvent<any>> => {
                return this.ParseErrorResponse(err);
            }));
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过添加finalize(() => {})它,并且在每种情况下都工作得很好,除了这个,ERR_TIMED_OUT基本上似乎决定所有事情都必须停止。

我也尝试过直接连接XMLHttpRequest,而 Angular 对此并不太友好——因为我觉得问题的根源可能源于它本身。

所有 google/stackoverflow 搜索几乎都表明这是一个本地问题,但我觉得好像应该有某种方法在我的代码中处理它,所以如果用户在使用我的应用程序时遇到此错误,我会能够适当地处理这个问题。基本上,我只想要任何请求ERR_TIMED_OUT(奇怪的是,其他浏览器基本错误返回“未知错误”类型的错误 - 这是我发现的唯一奇怪的异常值,它只是停止了一切。我希望看到如果其他人遇到了这个问题/愿意帮助我找出它。

感谢对此事的任何帮助并提前致谢,

timeout http xmlhttprequest interceptor angular

2
推荐指数
1
解决办法
1万
查看次数

我们怎样才能同步发送HTTP请求呢?

如果我没猜错的话,“AJAX”中的“A”意味着异步发送 HTTP 请求,而不等待 HTTP 响应。

我了解到我们可以通过 发送异步 HTTP 请求XMLHttpRequest,例如:

function handleButtonPress(e) { 
    var httpRequest = new XMLHttpRequest(); 
    httpRequest.onreadystatechange = handleResponse; 
    httpRequest.open("GET", e.target.innerHTML +  ".html"); 
    httpRequest.send(); 
} 
Run Code Online (Sandbox Code Playgroud)

我们怎样才能同步发送HTTP请求呢?

javascript xmlhttprequest

2
推荐指数
1
解决办法
3571
查看次数

上传文件到 Message Bird API

目前,我正在尝试将消息鸟 API 集成到我的自动化应用程序 ( https://developers.messagebird.com/ ) 中。

我正在尝试使用消息鸟 API 上传文件,因为文档说我正在使用此端点:https : //messaging.messagebird.com/v1/files返回我上传的文件的 ID,问题是,当我尝试将该 ID 与端点连接以获取文件(https://messaging.messagebird.com/v1/files/:id-of-the-file)并将该 URL 用于我想发送的消息(

content: {
   image:{
    url:"https://messaging.messagebird.com/v1/files/:id-of-the-file"
  }
}
Run Code Online (Sandbox Code Playgroud)

),消息未传递并且 webhook 返回失败状态(即消息未传递到通道),我想这是因为为了获取文件,我需要对自己进行身份验证,但是有我无法仅通过发送 URL 来验证自己的身份。另外,我尝试将 URL 作为图像的 base64 发送,但它也不起作用,我不知道我是否做错了或者这不是我必须使用的端点或什么。如果你能帮助我,我将不胜感激:)

PD:当我向邮递员发出请求时,它会在标头中发送 AccessKey,它确实会返回图像

base64 image http xmlhttprequest messagebird

2
推荐指数
1
解决办法
405
查看次数

如何找到加载缓慢的 SAPUI5 应用程序的加载瓶颈

我正在构建一个自定义 SAPUI5 应用程序,它由sap.viz.ui5.controls.VizFrame页面标题内容(嵌套在 a 内)中的七个图表 ( sap.suite.ui.commons.ChartContainer) 和sap.ui.table.Table主要内容区域中的网格表 ( ) 组成。图表和表格的数据由 OData V2 服务提供,该应用程序在最新版本 (1.81.0) 上独立运行。

问题是应用程序的加载时间长。需要 7 到 20 秒。这对于“更复杂”的应用程序来说是常见的吗?我试图找到瓶颈,但一切看起来都很好。许多网络请求被缓存(它们需要 0 毫秒),但是,它们之间有轻微的延迟,我不明白为什么。此外,控制台中还有以下警告,尽管我data-sap-async="true"在我的index.html文件中使用了:

[弃用] 主线程上的同步 XMLHttpRequest 被弃用,因为它对最终用户的体验有不利影响。如需更多帮助,请查看https://xhr.spec.whatwg.org/。[syncXHRFix-dbg.js:211:15]

我的 index.html 和 manifest.json 的代码片段

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Loading - Customer Fact Sheet</title>
        <script id="sap-ui-bootstrap"
            src="resources/sap-ui-core.js"
            data-sap-ui-theme="sap_fiori_3"
            data-sap-ui-resourceroots='{"com.schott.fiori.customerfactsheet.customerfactsheet-fiori3": "./"}'
            data-sap-ui-compatVersion="edge"
            data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
            data-sap-ui-async="true"
            data-sap-ui-frameOptions="trusted">
        </script>
        <link href="https://www.schott.com/static/assets/gfx/favicon/SCHOTT_16.png" rel="shortcut icon" type="image/png" />
    </head>
    <body class="sapUiBody">
        <div data-sap-ui-component …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest sapui5

2
推荐指数
1
解决办法
776
查看次数