为啥 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

XMLHttpRequest.open();第一个参数post,get有啥不同,啥时候选啥,还有其他的,都有啥区别

为啥 + 仅在客户端是 NaN?为啥不在 Node.js 中?