调用GET请求时拼接的用户输入ID字符串未被添加到URL中的问题
问题原因
- 核心问题是字符串是JS基本数据类型,赋值时就已经完成计算生成固定值,不会随关联变量后续修改自动更新
- 你定义
const url的代码在全局作用域初始化执行,此时id是空字符串,url就已经被拼接为固定值https://www.someurl/?someurl.com,后续你修改id的值不会触发url的重新计算 - 补充小问题:
input标签没有textarea类型,要么使用<input type="text">要么使用独立的<textarea>标签,避免输入取值异常
修复方案
把url的拼接逻辑移到点击事件函数内部,每次触发点击时用最新的输入值拼接新的url即可。
修正后的HTML代码
<input type="text"> <button onclick="myFunction()">Click</button>
修正后的JS代码
function myFunction() { const input = document.querySelector('input'); const id = input.value; // 每次点击时用最新的id拼接url const url = 'https://www.someurl/' + id + '?someurl.com'; console.log(id); console.log(url); const getXML = new XMLHttpRequest(); getXML.responseType = 'json'; getXML.open('GET', url); getXML.send(); getXML.onreadystatechange = function () { // 增加请求完成、状态正常的判断,避免未完成请求就处理响应 if (getXML.readyState === 4 && getXML.status === 200) { const response = getXML.response; console.log(getXML.status); console.log(response); console.log(id); console.log(url); console.log(typeof id); } } }
内容的提问来源于stack exchange,提问作者slowstarder
相关产品推荐
相关产品推荐

