为啥 xmlHttpRequest.Open 仅在我输入字符串时才起作用?
Posted
技术标签:
【中文标题】为啥 xmlHttpRequest.Open 仅在我输入字符串时才起作用?【英文标题】:why does xmlHttpRequest.Open only work when I input a string?为什么 xmlHttpRequest.Open 仅在我输入字符串时才起作用? 【发布时间】:2020-02-08 00:53:33 【问题描述】:我正在尝试在我的本地主机上调用 Restful 服务。我这样做是因为它是一个异步调用。调用我的服务的适当 Url 加上 Uri 模板是这样的:
“http://localhost:65016/Service1.svc/SN?lower=200&upper=300”
在我尝试打开的行 (xhttp.open) 上,我的客户端页面只会在我像这样插入 url 时接收到正确的数据:
xhttp.open("GET", "http://localhost:65016/Service1.svc/SN?lower=200&upper=300" , true);
但我需要 200 和 300 数字作为用户输入,所以我尝试了以下两件事: 我首先尝试获取用户输入,然后简单地将其连接到 URi 模板之间的基本 URL,如下所示:
<script>
function ServiceCall()
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function ()
if (xhttp.readyState == 4 && xhttp.status == 200)
var ans = document.getElementById("secretNum");
ans.innerhtml = xhttp.responseText;
var base_uri = "http://localhost:65016/Service1.svc/";
// grab the lower number
var ln = document.getElementById("LN").firstChild;
var LN = ln.nodeValue;
// grab upper number
var un = document.getElementById("UN").firstChild;
var UN = un.nodeValue;
//complete
var URL = base_uri + "SN?lower=" + LN + "&upper=" + UN;
xhttp.open("GET", URL, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send();
</script>
不起作用。因此,我尝试查看 xmlHttpRequest.open 的文档,发现参数必须是 URL。所以我尝试使用 URL(string) 函数并将输出用作参数,但这也不起作用。 请问有什么帮助吗?
【问题讨论】:
使用浏览器中的调试工具。查看正在发出的网络请求。并 console.log 记录 URL 变量以查看其真实值。 【参考方案1】:谢谢。我有助于查看网络请求。我只是使用错误的语法来获取 html 输入标记内的值。
var ln = document.getElementById("LN").value;
返回用户输入给定的html输入标签内的真实值。 我正在回答我自己的问题,因为这是一项家庭作业。 (不是我作弊。回答这个问题远不是解决功课)
【讨论】:
很高兴你得到它的工作:) 使用开发工具来发现问题是专业人士的做法,因此获得经验很有用!以上是关于为啥 xmlHttpRequest.Open 仅在我输入字符串时才起作用?的主要内容,如果未能解决你的问题,请参考以下文章
XMLHttpRequest().Open 在 Firefox 中不是函数,但在 Chrome 中有效
javascript XMLHttpRequest 对象的open() 方法参数说明
Cordova Async XMLHttpRequest().open 在 Android 中不起作用
处理异步调用XMLHTTPRequest.open时拒绝访问Javascript