[开始之前,我只是想说我对javascript很陌生。但是我尝试对URL进行GET请求,该请求将返回一个字符串-只是一些非常简单的文本,然后创建一个变量,并用于为html元素设置属性。
这是我的代码:
var vendor;
var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
aCallback(anHttpRequest.responseText);
}
anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
}
}
var client = new HttpClient();
client.get('http://my.example.com/file.txt', function(response) {
mydata = response;
document.querySelector(".btn").setAttribute("onclick", "window.open('https://" + mydata + ".example.com')");
});
我希望在mydata变量中使用“ file.txt”的内容,然后使用setAttribute更改onclick属性。
它的确返回了响应,但是向其添加了回车,并且当使用chrome javascript控制台显示“ mydata”时,它返回了:
"thetext
"
所以在“ thetext”之后回车。
和我的setAttribute最终看起来像:
<button class="btn btn-outline-dark btn-lg" onclick="window.open('https://textfromfile
.example.com')" ;="" type="button" name="buttonname">mybutton</button>
因此“ textfromfile”之后有一个回车符。
我假设TXT文件中也存在回车符,因此当然也将其返回!
但是,您可以使用trim
轻松剥离它:
trim
((请注意,这还会删除结尾的空格。)
附带说明,与其像这样设置mydata = response.trim()
,不如设置一个属性并具有一个引用此属性的静态点击处理程序会更好。甚至更好的是,因为似乎您正在使用Bootstrap:可以将常规链接与onclick
一起使用,使用<a class="btn">
使它在新窗口中打开链接,然后只需从代码中设置target="_blank"
属性即可。 >