简体   繁体   English

内容 <div> 完成eventListener函数后丢失

[英]Content of the <div> is lost after the eventListener function is completed

Here's my Html. 这是我的HTML。 the output will be str. 输出将是str。

<div id="response_container"> 
     //str 
</div>

And here's the javascript 这是JavaScript

const form = document.getElementById('search_form');
const htmlcontainer = document.getElementById('response_container');
    form.addEventListener('submit', function()
    {
        console.log("Inside sendQuery()");
        var to_search = document.querySelector('#item_to_search').value;
        var xmlObject = createObject();
        console.log(xmlObject);
        xmlObject.open("GET", "getData.php?search="+ to_search +"&srch_submit=search");
        xmlObject.send(null);
        xmlObject.onreadystatechange = function(){
            if(xmlObject.readyState == 4 && xmlObject.status == 200)
            {
                var doc = xmlObject.responseXML;
                var child = doc.documentElement;
                var content = child.firstChild.data;
                console.log(content);
                var arr = JSON.parse(content);

                for(var i = 0; i < arr.length ; i++)
                {
                    str = "<br><span>Name: "+ arr[i][0] +" Roll No: "+ arr[i][1] +"</span>";
                    htmlcontainer.insertAdjacentHTML('afterbegin', str);
                    /*htmlcontainer.innerHTML = str;*/

                }
                /*htmlcontainer.insertAdjacentHTML('afterend', content);*/

            }
            else
            {

            }

        }

This ajax code works with another php file and returns all the names in database that matches the string entered. 此ajax代码可与另一个php文件一起使用,并返回数据库中与输入字符串匹配的所有名称。 But names do not show up in this div that has id="response_container" . 但是名称不会显示在具有id="response_container" div中。 I tried halting program in debugger and found that as for loop proceeds, all names does show up in the but vanishes after the eventListener finishes its work. 我尝试在调试器中暂停程序,发现随着循环的进行,所有名称的确显示在,但在eventListener完成工作后消失了。 Please help. 请帮忙。 Is there any way I can fix this?I want names in . 我有什么办法可以解决这个问题? thank u 感谢你

Prevent the browser default form submit process 阻止浏览器默认表单提交过程

Change 更改

form.addEventListener('submit', function() {

To

form.addEventListener('submit', function(event) {
   event.preventDefault();
   // other code is same

You need to prevent the form from 'submitting' which is basically wiping out your div because of the page reload. 您需要防止表单“提交”,因为页面重新加载基本上消除了div。

form.addEventListener('submit', function(e) {
    e.preventDefault();
    //....
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM