javascript - 在函数内部调用 XMLHttpRequest 时未收到响应
问题描述
我有一个在提交时调用的 HTML 表单,该函数 -
function getLocationTemp() {
temp= new XMLHttpRequest();
temp.open('GET', 'url', true);
temp.onload = function () {
console.log(temp.response);
}
temp.send();
}
出于某种原因,我从未收到对此 API 调用的响应。我试过调试 readyState,我总是在-1。
虽然,当我在函数之外执行相同的代码块时 -
temp= new XMLHttpRequest();
temp.open('GET', 'url', true);
temp.onload = function () {
console.log(temp.response);
}
temp.send();
function getLocationTemp() {
console.log('random');
}
它有效,我得到数据和响应代码为- 4。
我认为问题在于流程正在离开函数,因此本地 onload 超出了范围。所以尝试在函数中运行一个从 0 到 100 的 for 循环,认为它会给它足够的时间来获得响应,并放入一个 while 循环,直到 readystate 变为 4 才会退出。但状态不会过去1.
似乎是什么问题?
解决方案
如上述回复中所列,该操作是重新渲染页面并终止请求。这将作为一个onclick函数处理程序或更改结构以使用form标记及其属性(如action和method )调用它来完成。
通过 onclick 方法执行此操作的示例是 -
function getLocationTemp() {
temp= new XMLHttpRequest();
temp.open('GET', 'url', true);
temp.onload = function () {
console.log(temp.response);
}
temp.send();
}
在html中是这样的-
<button type="button" onclick="getLocationTemp()">Submit Form</button>
推荐阅读
- python - 在 tkinter 画布上绘图似乎受线程进程的影响
- java - 如何在本地更新站点正确重新加载更改的 Eclipse 插件
- c# - Stripe Payments - 如何更改订阅计划并立即收费?
- r - 使用 ggplot 为轴刻度标签的一部分动态着色
- r - 线性模型中的动态列名
- javascript - JavaScript 画布包括绘图调整大小
- r - R c() 创建一个与连接的对象具有相同类的容器。正确的?
- unit-testing - void类型不存在属性'then',Angular 6单元测试错误
- ios - HKStatisticsCollectionQuery 工作一天,然后停止。如何让更新处理程序无限期地工作?
- html - HTML 元标记中的 Content-Security-Policy ~ 这安全吗?