我试图将从ajax调用收到的响应打印到php脚本中。这是我的代码:
javascript:
$.ajax({
url: 'index_backend.php',
type: 'POST',
data: { "input": "id"},
success: function(response) {
let str="";
const arr=response.split(" ");
for(var i=0; i<arr.length-1; i++){
str=str.concat(" ",arr[i]);
}
//console.log(arr); shows correct output
//console.log(arr[arr.length-1]); shows correct output
document.getElementById("qid").style.display="block";
$("#qid").text(str); //works
$("#qrtr_id").html(arr[arr.length-1]); //doesn't work
},
complete: function() {
}
});
html:
<span id="qid" style="display: none;">
Some random text here :
<span id="qrtr_id" style="color: crimson;"></span>
</span>
我所要做的,就是分开 response
并打印一部分 response
(不包括最后一个词)在单独的 <span>
最后一个字在一个单独的 <span>
. 但是最后一个字永远不会被打印出来,尽管当我 console.log()
单词,然后它正确地显示。
我重新检查了我的电脑 <span>
ID,它们也是正确的。我哪里做错了?
3条答案
按热度按时间lsmd5eda1#
$("#qid").text(str);
重写qid
用文本传递它。内容
qid
包括带有qrtr_id
所以当你重写它的时候,你就破坏了这个跨度。$("#qrtr_id")
然后没有找到任何元素。包
Some random text here :
在另一个跨度和目标中,而不是qid
.xfb7svmp2#
首先,请不要混合使用jquery和香草javascript:)。
其次,主要问题是您使用的是.text(text)方法。这将替换目标元素中的所有内容,因此第二个跨度将不再存在。这将用文本替换innerhtml。
因此,我的建议是使用append方法将最后一个跨距添加到第一个跨距中。
cwdobuhd3#
如我所见,在for循环中使用<=如下所示。
或者,在for循环中使用<arr.length,如下所示。